#java #json
#java #json
Вопрос:
Привет, я пытаюсь проанализировать следующие данные JSON:
{"chat":
{"link":
[{"@rel":"next","@ref":"http"}],
"events":
{"link2":
[{"@rel":"next","@ref":"http"}]}
}}
Код, который считывает данные (где ‘a’ — это JSON в виде строки):
JSONObject jsonObject1 = new JSONObject(a);
JSONObject jsonObject = jsonObject1.getJSONObject("chat");
Итак, структура (по крайней мере, так, как я предполагал) такова:
<chat>
<link>
<events>
<link2>
</events>
</chat<
Но после getJsonObject(«чат») JSONObject равен:
{"chat":{"events":{"link2":[{"@ref":"http","@rel":"next"}]},"link":[{"@ref":"http","@rel":"next"}]}}
Чего я не понимаю? Почему данные переворачиваются и меняется структура?
Комментарии:
1. «Почему данные переворачиваются и меняется структура?» Я не вижу никаких изменений структуры, просто «переворачиваются данные» (например, изменения в порядке отображения свойств). Как указывает msalvadores ниже, в свойствах объекта, представленного JSON, отсутствует порядок. (С сайта JSON : «Объект представляет собой неупорядоченный набор пар имя / значение» ) Чтобы иметь порядок, вы должны использовать упорядочивающую конструкцию (такую как массив). Поскольку единственные массивы в вашей структуре содержат только один элемент, это не очевидно из приведенного выше, но записи массива упорядочены и поэтому не будут перемещаться.
2. @T.J. Crowder, ты должен дать на это ответ.
3. @Lucero: Ну, в основном это просто продолжение ответа msalvadores, поэтому я прокомментировал, а не ответил. Действительно, что я должен был сделать, так это отредактировать ответ msalvadores, чтобы добавить ссылку и цитату или что-то в этом роде, поскольку StackOverflow предназначен для совместной работы. Но я действительно осторожно отношусь к этому (и большинство людей, похоже, ведут себя, вероятно, более осторожно, чем Джефф изначально планировал). Редактировать: И я сделал это сейчас, мы все должны быть более готовы сделать хорошие ответы еще лучше.
Ответ №1:
Свойства в объекте JSON не отсортированы. С сайта JSON:
Объект представляет собой неупорядоченный набор пар имя / значение…
(Мой акцент) Поэтому позиция link
и event
не имеет значения для анализатора. Нижняя строка, link
и event
находятся на одном уровне, поэтому их можно сдвинуть, и везде, где важен порядок, используйте массивы в JSON … []
.