我正在尝试使用 PHP 将服务器中的一些数据解析为 JSON 和 JSONArrays 上的 Android Studio 上的 ListView,并且在尝试将 JSON 放入对象时在 for 循环中出现错误,错误为"结果无值",尽管之前输出了 JSON 数组并在那里显示数据。
圈:
Log.d("json: ", result);
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray("results");
for (int i = 0; i<1; i++){//<jsonArray.length()-1
JSONObject getObj = jsonArray.getJSONObject(i);
JSONObject classObj = getObj.getJSONObject("results");
Classes dailyClasses = new Classes();
dailyClasses.setClass_id("" + classObj.getString("id"));
dailyClasses.setClass_name("" + classObj.getString("name"));
dailyClasses.setClass_room("" + classObj.getString("room"));
dailyClasses.setClass_day("" + classObj.getString("day"));
dailyClasses.setClass_time("" + classObj.getString("time"));
classList.add(dailyClasses);
}
错误:
02-04 17:45:48.830 23024-23047/com.example.cameron.projectapp W/System.err: org.json.JSONException: No value for results
那行是"结果"是我的 JSONArray 的名称: JSONObject classObj = getObj.getJSONObject("results");
我错过了一些非常明显的东西吗?
你现在已经有了数组,你所需要的只是单个数组,不需要再次获取数组,因为它不存在。
像这样更改for
循环
for (int i = 0; i<jsonArray.length(); i++){
JSONObject classObj = jsonArray.getJSONObject(i);
Classes dailyClasses = new Classes();
dailyClasses.setClass_id("" + classObj.getString("id"));
dailyClasses.setClass_name("" + classObj.getString("name"));
dailyClasses.setClass_room("" + classObj.getString("room"));
dailyClasses.setClass_day("" + classObj.getString("day"));
dailyClasses.setClass_time("" + classObj.getString("time"));
classList.add(dailyClasses);
}
试试这个
for (int i = 0; i<1; i++){//<jsonArray.length()-1
JSONObject classObj = jsonArray.getJSONObject(i);
Classes dailyClasses = new Classes();
dailyClasses.setClass_id("" + classObj.getString("id"));
dailyClasses.setClass_name("" + classObj.getString("name"));
dailyClasses.setClass_room("" + classObj.getString("room"));
dailyClasses.setClass_day("" + classObj.getString("day"));
dailyClasses.setClass_time("" + classObj.getString("time"));
classList.add(dailyClasses);
}