それを行う(ハッキーな)方法があります...しかし、あなたはすべきではありません。
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 Object Notation(JSON)は、構造化データをシリアル化するためのテキスト形式です。..。
JSONは、4つのプリミティブ型(文字列、数値、ブール値、およびnull)と2つの構造化型(オブジェクトと配列)を表すことができます。
オブジェクトは、0個以上の名前と値のペアの順序付けられていないコレクションです。ここで、名前は文字列であり、値は文字列、数値、ブール値、null、オブジェクト、または配列です。
JSON解析ライブラリは、オブジェクトメンバーの順序を呼び出し側ソフトウェアに表示するかどうかに関して異なることが確認されています。動作がメンバーの順序に依存しない実装は、これらの違いの影響を受けないという意味で相互運用可能です。