Есть (хакерские) способы сделать это ... но вы не должны.
В JSON объект определяется следующим образом:
Объект - это неупорядоченный набор пар имя / значение.
См. http://json.org.
Большинство реализаций JSON не прилагают усилий для сохранения порядка пар имя / значение объекта, поскольку это (по определению) не имеет значения.
Если вы хотите сохранить порядок, вам необходимо переопределить структуру данных; например,
{
"items":
[
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
],
]
}
или более просто:
{
"items":
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
]
}
Followup
Спасибо за информацию, но у меня нет выбора, кроме как использовать JSON в моем приложении, и мое приложение должно сохранять порядок ключей независимо от определения объекта JSON ... Мне не разрешено изменять формат а также файл JSON ...
Вам нужно серьезно поговорить с тем, кто разработал эту файловую структуру, и не позволит вам ее изменить. Это / они совершенно не правы. Вам нужно , чтобы убедить их.
Если они действительно не позволят вам изменить его:
- Вы должны настаивать на , а не , называя это JSON ... потому что это не так.
- Вы должны указать, что вам придется специально писать / изменять код для обработки этого формата "не JSON" ... если только вы не найдете какую-либо реализацию JSON, которая сохраняет порядок. Если они платный клиент, убедитесь, что они оплачивают эту дополнительную работу, которую вы должны сделать.
- Вы должны указать, что если "не JSON" нужно использовать каким-либо другим инструментом, это будет проблематично. Действительно, эта проблема будет возникать снова и снова ...
Такие вещи очень плохие. С одной стороны, ваше программное обеспечение будет нарушать устоявшуюся / давнюю спецификацию, разработанную для обеспечения совместимости. С другой стороны, придурки, которые разработали этот хромой (не JSON!) Формат файла, вероятно, отвлекаются от систем других людей и т. Д., Поскольку системы не могут справиться с их бессмыслицей.
UPDATE
Также стоит прочитать, что JSON RFC (RFC 7159) говорит по этому вопросу. Вот некоторые выдержки:
За годы, прошедшие после публикации RFC 4627, JSON нашел очень
широкое распространение. Этот опыт выявил определенные закономерности, которые,
в то время как позволено его спецификациями, вызвало совместимость
проблемы.
JavaScript Object Notation (JSON) - это текстовый формат для
сериализация структурированных данных. ...
JSON может представлять четыре примитивных типа (строки, числа, логические значения,
и ноль) и два структурированных типа (объекты и массивы).
Объект является неупорядоченным набором из нуля или более имени / значения
пары, где имя - это строка, а значение - строка, число,
логическое значение, ноль, объект или массив.
Было обнаружено, что библиотеки синтаксического анализа JSON различаются по
не они делают порядок членов объекта видимым для вызова
программного обеспечения. Реализации, поведение которых не зависит от члена
порядок будет совместим в том смысле, что они не будут
затронуты этими различиями.