jsonArray.length()没有给出正确数量的数组元素

时间:2016-01-19 10:46:03

标签: java json org.json

我正在使用org.json解析器。 我正在使用jsonObject.getJSONArray(key)获取json数组。 问题是jsonArray.length()返回我1而我的json数组有2个元素,我做错了什么?

String key= "contextResponses";
JSONObject jsonObject = new JSONObject(jsonInput);
Object value = jsonObject.get("contextResponses");  

if (value instanceof JSONArray){
  JSONArray jsonArray = (JSONArray) jsonObject.getJSONArray(key);
  System.out.println("array length is: "+jsonArray.length());/*the result is 1! */
}

这是我的json:

{
  "contextResponses" : [
    {
      "contextElement" : {
        "type" : "ENTITY",
        "isPattern" : "false",
        "id" : "ENTITY3",
        "attributes" : [
          {
            "name" : "ATTR1",
            "type" : "float",
            "value" : ""
          }
        ]
      },
      "statusCode" : {
        "code" : "200",
        "reasonPhrase" : "OK"
      }
    }
  ]
}

2 个答案:

答案 0 :(得分:4)

结果完全正常,因为JSONArray只包含一个JSONObject。要获得您正在寻找的length JSONObject,请使用以下命令:

// Get the number of keys stored within the first JSONObject of this JSONArray
jsonArray.getJSONObject(0).length(); 

//----------------------------
{
  "contextResponses" : [
    // The first & only JSONObject of this JSONArray
    {
      // 2 JSONObjects
      "contextElement" : {
          // 1
      },
      "statusCode" : {
          // 2
      }
    }
  ]
}

答案 1 :(得分:2)

您的数组只包含一个对象,因此长度正确:

"contextResponses" : [
  {
     ... content of the object ...
  }
]