JSONObject Длина массива JSON
Я читаю ниже XML в Java, и конвертирую в 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"
]
}
}
]
}
}
2 ответа
В JSON
формат,
[]
такое JSONArray
{}
такое JSONObject
В вашем посте
- Пользователи - JSONObject
- Пользователь - JSONArray
- Книги - JSONObject
- Книга - JSONArray
Error: org.json.JSONException: JSONObject["User"] is not a JSONObject.
Как уже упоминалось выше, попробуйте с getJSONArray()
JSONArray userArray = jUsers.getJSONArray("User");
Я должен был позвонить getJSONArray
метод при получении массива.
JSONObject jsonObj = service.getMyData();
JSONObject jUsers = jsonObj.getJSONObject("Users");
System.out.println(jUsers.getJSONArray("User").length());