【问题标题】:getJSONArray inside another json arraygetJSONArray 在另一个 json 数组中
【发布时间】:2017-09-15 12:15:39
【问题描述】:

我有以下 JSON 结构:

{  
   "schedule":{
      "day":[
         {  
            "id":"Monday",
            "items":[
                {
                },
                {
                }
            ]
         }, 
         {  
            "id":"Tuesday",
            "items":[
                {
                },
                {
                }
            ]
         }
      ]
   }
}

我基本上想做的是到达 day 数组内的 items 数组,该数组位于 schedule 对象内。

但每当我尝试获取第二个 JSON 数组时,我都会得到 getJSONArray JSONArray 中的 (int) 不能应用于 (java.lang.String)

JSONObject baseJsonResponse = new JSONObject(dayJSON);
JSONArray dayArray = baseJsonResponse.getJSONObject("schedule").getJSONArray("day").getJSONArray("items");

【问题讨论】:

  • 提示:你必须使用 for 循环。
  • 尝试将 Json getJsonArray 和 getJsonObject 的 getter 分开以分隔行,我相信您会发现问题所在。它基本上说您正在尝试将字符串提取到数组中
  • @Ibrahim for (int i = 0; i ...等等...riiight

标签: android arrays json


【解决方案1】:

您应该使用两个 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);

            }


    }

【讨论】:

  • 这有点解决了我的问题,唯一的问题是它重复了 items 内的所有字符串 4 次。
  • @Alin 很高兴听到 .FYI 请调试 .Sloppy 错误来了。
  • 找到 id :D 问题在这里: JSONObject jOBJNEW = jArray.getJSONObject(j);你写了一个 i 而不是 j 并且很难找到 :))
【解决方案2】:

看起来day 是一个对象列表。所以基本上,你必须做类似getJSONArray("day").get(0).getJSONArray("items")的事情。

【讨论】:

    【解决方案3】:

    你可以试试这个

    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();
            }
    

    【讨论】:

      【解决方案4】:

      根据您提供的 JSON,baseJsonResponse.getJSONObject("schedule").getJSONArray("day") 将返回一个 JSONArray 而不是 JSONObject。 每个“天”JSONObject 中都有一个“项目”JSONArray。

      你可以试试

      for(int i = 0 ; i < baseJsonResponse.getJSONObject("schedule").getJSONArray("day").length() ; i++){
             JSONArray itemArray = baseJsonResponse.getJSONObject("schedule").getJSONArray("day")
                       .getJSONObject(i).getJSONArray("items");
      }
      

      【讨论】:

        猜你喜欢
        • 2018-02-24
        • 1970-01-01
        • 2017-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2020-06-08
        相关资源
        最近更新 更多