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());
Другие вопросы по тегам