Es gibt (hackige) Möglichkeiten, dies zu tun ... aber Sie sollten es nicht tun.
In JSON wird ein Objekt folgendermaßen definiert:
Ein Objekt ist eine ungeordnete Menge von Name / Wert-Paaren.
Siehe http://json.org .
Die meisten Implementierungen von JSON bemühen sich nicht, die Reihenfolge der Name / Wert-Paare eines Objekts beizubehalten, da sie (per Definition) nicht signifikant ist.
Wenn Sie möchten, dass die Ordnung erhalten bleibt, müssen Sie Ihre Datenstruktur neu definieren. z.B
{
"items":
[
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
],
]
}
oder einfacher:
{
"items":
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
]
}
NACHVERFOLGEN
Vielen Dank für die Informationen, aber ich habe keine andere Wahl, als JSON in meiner Anwendung zu verwenden, und meine Anwendung muss die Reihenfolge der Schlüssel unabhängig von der Definition des JSON-Objekts beibehalten ... Ich darf das Format der JSON-Datei nicht ändern auch...
Sie müssen ein hartes Gespräch mit demjenigen führen, der diese Dateistruktur entworfen hat, und Sie dürfen sie nicht ändern. Es ist / sie sind einfach falsch. Sie müssen sie überzeugen.
Wenn sie dich das wirklich nicht ändern lassen:
- Sie sollten darauf bestehen , nicht es JSON Aufruf ... ‚cos es nicht ist.
- Sie sollten darauf hinweisen, dass Sie Code speziell schreiben / ändern müssen, um dieses "Nicht-JSON" -Format zu verarbeiten ... es sei denn, Sie finden eine JSON-Implementierung, die die Reihenfolge beibehält. Wenn sie zahlende Kunden sind, stellen Sie sicher, dass sie für diese zusätzliche Arbeit bezahlen, die Sie erledigen müssen.
- Sie sollten darauf hinweisen, dass es problematisch sein wird, wenn "nicht JSON" von einem anderen Tool verwendet werden muss. In der Tat wird dieses Problem immer und immer wieder auftreten ...
So etwas ist wirklich schlimm. Einerseits verstößt Ihre Software gegen eine etablierte / langjährige Spezifikation, die die Interoperabilität fördern soll. Auf der anderen Seite verschmutzen die Trottel, die dieses lahme (nicht JSON!) Dateiformat entworfen haben, wahrscheinlich die Systeme anderer Leute usw., weil die Systeme ihren Unsinn nicht bewältigen können .
AKTUALISIEREN
Es lohnt sich auch zu lesen, was der JSON RFC (RFC 7159) zu diesem Thema sagt. Hier einige Auszüge:
In den Jahren seit der Veröffentlichung von RFC 4627 hat JSON eine sehr breite Verwendung gefunden. Diese Erfahrung hat bestimmte Muster aufgedeckt, die, obwohl sie nach ihren Spezifikationen zulässig sind, Interoperabilitätsprobleme verursacht haben.
JavaScript Object Notation (JSON) ist ein Textformat für die Serialisierung strukturierter Daten. ...
JSON kann vier primitive Typen (Zeichenfolgen, Zahlen, Boolesche Werte und Null) und zwei strukturierte Typen (Objekte und Arrays) darstellen.
Ein Objekt ist eine ungeordnete Sammlung von null oder mehr Name / Wert-Paaren, wobei ein Name eine Zeichenfolge und ein Wert eine Zeichenfolge, eine Zahl, ein Boolescher Wert, eine Null, ein Objekt oder ein Array ist.
Es wurde beobachtet, dass JSON-Parsing-Bibliotheken sich darin unterscheiden, ob sie die Reihenfolge der Objektmitglieder für aufrufende Software sichtbar machen oder nicht. Implementierungen, deren Verhalten nicht von der Reihenfolge der Mitglieder abhängt, sind in dem Sinne interoperabel, dass sie von diesen Unterschieden nicht betroffen sind.