Есть (хакерские) способы сделать это ... но вы не должны.
В 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"}
]
}
СЛЕДОВАТЬ ЗА
Спасибо за информацию, но у меня нет выбора, кроме как использовать JSON в моем приложении, и мое приложение должно сохранять порядок ключей независимо от определения объекта JSON ... Мне не разрешено изменять формат файла JSON также...
Вам нужно вести жесткий разговор с тем, кто разработал эту файловую структуру, и не позволит вам ее изменить. Это / они совершенно неправы. Вам нужно их убедить.
Если они действительно не позволят вам это изменить:
- Вы должны настаивать на том, чтобы не называть его JSON ... потому что это не так.
- Вы должны указать, что вам придется писать / изменять код специально для обработки этого «не JSON» формата ... если вы не найдете какую-либо реализацию JSON, которая сохраняет порядок. Если они платные клиенты, убедитесь, что они платят за эту дополнительную работу, которую вы должны выполнить.
- Вы должны указать, что если «не JSON» нужно использовать каким-либо другим инструментом, это будет проблематично. Действительно, эта проблема будет повторяться снова и снова ...
Такие вещи очень плохие. С одной стороны, ваше программное обеспечение будет нарушать устоявшуюся / давнюю спецификацию, разработанную для обеспечения взаимодействия. С другой стороны, придурки, которые разработали этот убогий (не JSON!) Формат файла, вероятно, шлёпают чужие системы и т. Д., Потому что системы не могут справиться с их ерундой.
ОБНОВИТЬ
Также стоит прочитать, что говорится в JSON RFC (RFC 7159) по этому поводу. Вот несколько выдержек:
За годы, прошедшие после публикации RFC 4627, JSON нашел очень широкое применение. Этот опыт выявил определенные закономерности, которые, хотя и допускались спецификациями, вызывали проблемы взаимодействия.
Нотация объектов JavaScript (JSON) - это текстовый формат для сериализации структурированных данных. ...
JSON может представлять четыре примитивных типа (строки, числа, логические значения и null) и два структурированных типа (объекты и массивы).
Объект представляет собой неупорядоченную коллекцию из нуля или более пар имя / значение, где имя - это строка, а значение - это строка, число, логическое значение, null, объект или массив.
Было замечено, что библиотеки синтаксического анализа JSON различаются в зависимости от того, делают ли они порядок элементов объекта видимым для вызывающего программного обеспечения. Реализации, поведение которых не зависит от порядка элементов, будут взаимодействовать в том смысле, что на них не будут влиять эти различия.