【问题标题】:Count the json objects inside json Array in Android?在Android中计算json数组中的json对象?
【发布时间】:2013-12-30 06:39:15
【问题描述】:

我正在尝试将 json 值解析到我的 Android 应用程序中。在这里,我被困在一个需要在 json 数组列表中包含对象长度的地方。

下面是我的json:

    "events": { //json object
            "2012-11-30": [ // json array
                {
                    "privacy": "OPEN",
                    "name": "LOGDGE"   
                }
            ],
            "2013-08-17": [
                {
                    "privacy": "OPEN",
                    "name": "Party: Dinner and Dancing"
                }
            ],
            "2013-09-14": [
                {
                    "privacy": "OPEN",
                    "name": "Party: Dinner and Dancing"
                }
            ],
            "2013-09-27": [
                {
                    "privacy": "OPEN",
                    "name": "Salsa Party!"  
                }

            {
             "privacy": "OPEN",
                     "name": "Dance Performance Course",
            }       
            ],
            "2013-10-23": [
                {
                    "privacy": "OPEN",
                    "name": "Dance Performance Course"
                }
            ]
    }

现在我的问题是如何解析得到 json 数组的长度,例如:

  • 2012-11-30 计数 = 1
  • 2013-08-17 计数 = 1
  • 2013-09-27 计数 = 2

我如何使用日期循环 json 数组,因为它们是 json 对象,并找到每个 json 数组日期的长度。我想在这里单独计算每个数组。 我是否需要在 json 数组“dates”中添加一个键值对,以便我可以有一个 for 循环来获取数组内的值的计数?

提前谢谢你

【问题讨论】:

  • 你想要一个关键“事件”的对象列表吗?如果是,那么您应该将日期事件列表放在数组 []
  • 我想要每个日期的 json 数组计数

标签: android json arrays jsonobject


【解决方案1】:

尝试下面的代码并使用 JsonArray 的长度计算对象:

Iterator<Object> keys = eventobject.keys();
while (keys.hasNext()) {
  String key = keys.next();
    try{
         JSONArray array = jObject.getJSONArray(key);
         //count objects values using array length.
    }
    catch(Exception e){
        e.printStackTrace()
    }
}

【讨论】:

    【解决方案2】:
    String jstr = jso.getString("Events");
    JSONObject mdcalkey = new JSONObject(jstr);
    Iterator iter = mdcalkey.keys();
    ArrayList<String> arr = new ArrayList<String>();
    ArrayList<String> arrTimeDate = new ArrayList<String>();
    ArrayList<String> arrtype = new ArrayList<String>();
    
    while (iter.hasNext()) {
        arr.add((String) iter.next());
    }
    
    // ja = mdcalkey.getJSONArray(arr.get(0));
    jar = new JSONArray[arr.size()];
    

    此 arr 数组将显示所有日期数组。请检查它。如果有任何查询,请告诉我。

    【讨论】:

      【解决方案3】:

      您可以遍历 JSONObject 中的键并检查它们对应的值是否为 JSONArray,然后将它们的长度存储在映射中:

      Iterator iter = yourJSONObject.keys();
      while (iter.hasNext())
      {
          String key = (String) iter.next();
          JSONArray array = yourJSONObject.optJSONArray(key);
          if (array != null)
          {
              // the value for this key is an array
              for (int i = 0; i < array.length; i++){
                  // do stuff
              }
          }
      }
      

      【讨论】:

        【解决方案4】:
          String json =  "events": { //json object
                "2012-11-30": [ // json array
                    {
                        "privacy": "OPEN",
                        "name": "LOGDGE"   
                    }
                ],
                "2013-08-17": [
                    {
                        "privacy": "OPEN",
                        "name": "Party: Dinner and Dancing"
                    }
                ],
                "2013-09-14": [
                    {
                        "privacy": "OPEN",
                        "name": "Party: Dinner and Dancing"
                    }
                ],
                "2013-09-27": [
                    {
                        "privacy": "OPEN",
                        "name": "Salsa Party!"  
                    }
        
                {
                 "privacy": "OPEN",
                         "name": "Dance Performance Course",
                }       
                ],
                "2013-10-23": [
                    {
                        "privacy": "OPEN",
                        "name": "Dance Performance Course"
                    }
                ]
        }
               try {
                        JSONObject  obj = new getJSONObject(new JSONObject("{"+"json"+"}").getJSONObject("events").toString());
                        Iterator iterator = obj.keys();
                  while (iterator.hasNext())
                 {
                  String key = (String) iterator.next();
                  JSONArray array = obj.optJSONArray(key);
                  if (array != null)
                 {
                // the value for this key is an array
                  for (int i = 0; i < array.length; i++){
                  // do stuff
                   }
                 }
                 }
                  }
               catch (JSONException e)
                    {
                    // handle exception here
                     }
        

        【讨论】:

        • 给出异常:org.json.JSONException:java.lang.String 类型的值 json 无法转换为 JSONObject
        • 哦,你是你的数据只是这样的
        猜你喜欢
        • 1970-01-01
        • 2016-03-20
        • 1970-01-01
        • 2020-08-02
        • 2019-07-08
        • 2019-08-11
        • 1970-01-01
        • 2016-05-31
        • 2020-07-23
        相关资源
        最近更新 更多