我正在阅读java中的以下XML,并转换为JSONObject
[org.json.JSONObject
]。
并附加元数据并以JSON形式返回。
问题:
JSONObject jsonObj = service.getMyData();
//自定义方法和调用
int count = jsonObj.length();
//长度为1
如何从这个jsonObj中获取正确的计数? 。在这种情况下,我所指的正确计数是2。 [2本书]
我尝试了什么?
(1)System.out.println(jsonObj.length());
//打印1
API说:length() 获取存储在JSONObject中的密钥数。
(2)由于键的数量返回为1,因此尝试下面的键没有意义,我仍然尝试过
并得到org.json.JSONException: JSONObject["User"] not found.
System.out.println(jsonObj.getJSONArray("User").length());
(3)如果我尝试用户'即:jsonObj.getJSONArray("Users").length()
,它说JSONObject["Users"] is not a JSONArray
。
(4)
JSONObject jsonObj = service.getMyData();
JSONObject jUsers = jsonObj.getJSONObject("Users");
JSONObject jUser = jUsers.getJSONObject("User");
System.out.println(jUser.length());
错误:org.json.JSONException: JSONObject["User"] is not a JSONObject.
XML:
<Users>
<User>
<Name>Unni</Name>
<Books>
<Book>book1</Book>
<Book>book2</Book>
<Book>book3</Book>
</Books>
</User>
<User>
<Name>Ammu</Name>
<Books>
<Book>book1</Book>
<Book>book2</Book>
<Book>book4</Book>
</Books>
</User>
</Users>
JSON:
{
"Users": {
"User": [
{
"Name": "Unni",
"Books": {
"Book": [
"book1",
"book2",
"book3"
]
}
},
{
"Name": "Ammu",
"Books": {
"Book": [
"book1",
"book2",
"book4"
]
}
}
]
}
}
答案 0 :(得分:2)
我在检索数组时必须调用getJSONArray
方法。
JSONObject jsonObj = service.getMyData();
JSONObject jUsers = jsonObj.getJSONObject("Users");
System.out.println(jUsers.getJSONArray("User").length());
答案 1 :(得分:1)
以JSON
格式,
[]
是JSONArray
{}
是JSONObject
在你的帖子中,
Error: org.json.JSONException: JSONObject["User"] is not a JSONObject.
如上所述,请尝试使用getJSONArray()
JSONArray userArray = jUsers.getJSONArray("User");