getJSONArray在另一个json数组中

时间:2017-09-15 12:15:40

标签: android arrays json

我有以下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");

4 个答案:

答案 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");
}