我正在使用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"
}
}
]
}
答案 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 ...
}
]