Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Ключи JSONObject выводятся случайным образом

#android #java #json


И снова здравствуйте!
Опять загадки преподносит Java по неопытности...

Есть JSON:

{
    "data": {
        "task_1": {
            "name": "task_1"
        },
        "task_2": {
            "name": "task_2"
        },
        "task_3": {
            "name": "task_3"
        },
        "task_4": {
            "name": "task_4"
        }
    }
}


Есть код, который обрабатывает этот JSON  выводит ключи объектов на экран:

 String jsonStr = "{\"data\":{\"task_1\":{\"name\":\"task_1\"},\"task_2\":{\"name\":\"task_2\"},\"task_3\":{\"name\":
\"task_3\"},\"task_4\":{\"name\": \"task_4\"}}}";
 try {
    JSONObject jsonObject = new JSONObject(jsonStr);
    JSONObject data = jsonObject.getJSONObject("data");
    Iterator i = data.keys();
    while (i.hasNext()){
       String objName = i.next().toString();
       Log.d(TAG + ":JSON_TEST:", objName);
    }
 } catch (JSONException e) {
    Log.d(TAG + ":JSON_TEST:", e.getMessage());
 }


Вопрос: почему при выводе ключи перемешались и вывелись не так, как они стоят в JSON?



P.S.: к сожалению, код на ideone.com запустить не смог, там не поддерживается 

import org.json.JSONObject;

    


Ответы

Ответ 1



Потому что: A JSONObject is an unordered collection of name/value pairs Ищите ответы на подобные вопросы в документации. В частности для JSONObject.

Ответ 2



Упорядоченными являются элементы массива. То есть у вас data является объектом, и task_X - его поля. Порядок полей не важен. А вот если бы они передавались, как массив... { "data": [ { "name": "task_1" }, { "name": "task_2" }, { "name": "task_3" }, { "name": "task_4" } ] } то оставались бы упорядоченными

Комментариев нет:

Отправить комментарий