我有以下JSON攻击:
{
"schedule":{
"day":[
{
"id":"Monday",
"items":[
{
},
{
}
]
},
{
"id":"Tuesday",
"items":[
{
},
{
}
]
}
]
}
}
我基本上想要做的是到达日期对象内的项目数组,该数组位于日程对象内。
但每当我尝试获取第二个JSON数组时,我得到 getJSONArray JSONArray中的(int)不能应用于(java.lang.String)。
JSONObject baseJsonResponse = new JSONObject(dayJSON);
JSONArray dayArray = baseJsonResponse.getJSONObject("schedule").getJSONArray("day").getJSONArray("items");
答案 0 :(得分:2)
您应该使用两个 for loop
尊重 JSONArray
。
JSONObject obj = new JSONObject(success);
JSONObject JOBJ_Schedule = obj.getJSONObject("schedule");
JSONArray schedule_Array = JOBJ_Schedule.getJSONArray("day");
for (int i = 0; i < schedule_Array.length(); i++)
{
JSONObject jOBJ = schedule_Array.getJSONObject(i);
JSONArray jArray = jOBJ.getJSONArray("items");
for (int j = 0; j < jArray.length(); j++)
{
JSONObject jOBJNEW = jArray.getJSONObject(j);
}
}
答案 1 :(得分:0)
看起来day
是一个对象列表。所以基本上,你必须做getJSONArray("day").get(0).getJSONArray("items")
之类的事情。
答案 2 :(得分:0)
你可以试试这个
try {
JSONObject baseJsonResponse = new JSONObject("dayJSON");
JSONObject schedule= baseJsonResponse.getJSONObject("schedule");
JSONArray day=schedule.optJSONArray("day");
for (int i=0; i<day.length(); i++) {
JSONObject data = day.getJSONObject(i);
String id = data.getString("id");
JSONArray items = data.getJSONArray("items");
for (int j = 0; j < items.length(); j++) {
JSONObject data2 = day.getJSONObject(i);
String str = data2.getString("YOurkey");
Log.e("categories", str);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
答案 3 :(得分:0)
根据您提供的JSON,baseJsonResponse.getJSONObject("schedule").getJSONArray("day")
将返回JSONArray而不是JSONObject。
有一个&#34;项目&#34; JSONArray在每个&#34; day&#34; JSONObject的。 &LT;可能是这个原因。
你可以尝试
for(int i = 0 ; i < baseJsonResponse.getJSONObject("schedule").getJSONArray("day").length() ; i++){
JSONArray itemArray = baseJsonResponse.getJSONObject("schedule").getJSONArray("day")
.getJSONObject(i).getJSONArray("items");
}