答えて
はい、JSON配列の要素の順序は保持されます。 RFC 7159 -The JavaScript Object Notation (JSON) Data Interchange Format から(強調鉱山):
オブジェクトはゼロ以上の名前/値ペアの 順不同コレクション、名前が文字列であり、値はストリング、数、 ブール値、ヌルであります、オブジェクト、または配列。
配列は、0以上の値のの順序で配列されたです。
用語「オブジェクト」と「配列」は、 JavaScriptの表記規則に基づいています。
配列内の要素の順序は維持されます([]
)。 "オブジェクト"({}
)内の要素(名前:値のペア)の順序は異なります。JSONフォーマッタ/パーサー自体ではなく、言語固有のオブジェクト(辞書、NSDictionary、Hashtableなど)を内部表現として使用します。
"JSONリストの要素の順序は維持されていますか?"良い質問ではありません。 「JSONリストの要素の順序は、[...]を行うときに維持されていますか? Felix King氏が指摘したように、JSONはテキスト形式のデータ形式です。それは理由なしに突然変異しない。 JSON文字列と(JavaScript)オブジェクトを混同しないでください。
あなたはたぶんJSON.stringify(JSON.parse(...))
のような操作について話しているでしょう。今答えは:それは実装に依存します。 JSONパーサーの99%*は、オブジェクトの順序を維持しない、と配列の秩序を維持しますが、あなたは同様に
{
"son": "David",
"daughter": "Julia",
"son": "Tom",
"daughter": "Clara"
}
のようなものを保存し、オブジェクトの順序を維持パーサーを使用するためにJSONを使用する場合があります。
は*おそらくもっと:)
JSONパーサーの使い方について話しているのであれば、間違っています。 V8は注文を維持していますが、JSONパーサーの使用量の1%以上を占めると推測されます。 http://code.google.com/p/v8/issues/detail?id=164#c1 –
@BenAtkinあなたのリンクは、V8が**どのように注文を維持しないかについての説明を指しているのは面白いです。 – user123444555621
"デファクトスタンダードは、 V8も同じですが、例外はありません。" –
いくつかのJavaScriptエンジンは、挿入順にキーを保持します。 V8、例えば、keeps all keys in insertion order except for keys that can be parsed as unsigned 32-bit integers。
これは、次のいずれかを実行する場合ことを意味します、
var animals = {};
animals['dog'] = true;
animals['bear'] = true;
animals['monkey'] = true;
for (var animal in animals) {
if (animals.hasOwnProperty(animal)) {
$('<li>').text(animal).appendTo('#animals');
}
}
var animals = JSON.parse('{ "dog": true, "bear": true, "monkey": true }');
for (var animal in animals) {
$('<li>').text(animal).appendTo('#animals');
}
あなたは一貫してChromeで、そのために犬、はを負担し、猿を取得しますV8を使用します。 Node.jsはV8も使用します。これは何千ものアイテムがあっても当てはまります。他のJavaScriptエンジンとのYMMV
しかし、それはJSONの部分で未定義の動作に依存しています。交換するものは、同じ動作をしていない可能性があります。 –
実際には、キーのタイプがNaNの場合、ブラウザは順序を変更しません。
次のスクリプトが出力されます "ワン"、 "二"、 "三":
var foo={"@3":"Three", "@1":"One", "@2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
:次のスクリプトが出力されます "三"、 "ワン"、 "二" のに対し
var foo={"3":"Three", "1":"One", "2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
しかし、それはJSONの部分で未定義の動作に依存しています。交換するものは、同じ動作をしていない可能性があります。 –
この回答は、オブジェクトについて説明します。質問はjsonの "list"に関連しています。これは配列を意味するとしか推測できません。これは意味的にjsonの仕様で順序付けられています(Jeremyの答えを参照)。 – Tom
- 1. オブジェクトへのLinq:GroupByは要素の順序を保持していますか?
- 2. 単純なXML - 要素の順序が保存されていませんか?
- 3. ハッシュテーブルの要素の順序を保持する方法
- 4. スタックされたHTML要素の順序
- 5. JavaScript配列の順序は保証されていますか?
- 6. リストに要素を追加して順序を保持することは可能です
- 7. doctype内の異なるカーディナリティを持つ要素の順序の順序
- 8. サス子要素の順序?
- 9. getElementsByTagName()を使用して返される要素の順序
- 10. jQueryラップされたセット内の要素の順序は、要素がマークアップ内に表示される順序と常に一致しますか?
- 11. 2つのリストを重複する要素なしで1つの保持順序にマージする
- 12. ScriptReferenceの順序は、実行時に常に保持されますか?
- 13. HTMLは、右の要素の順序
- 14. BaseAdapter.notifyDataSetChangedは要素の順序を逆順にします
- 15. 変更されていない場合、イテレーション間でハッシュの順序が保持されますか?
- 16. 順序付き/順序なしリストの高さが返されない
- 17. PLINQはシーケンス内の元の順序を保持しますか?
- 18. リストの理解による結果の順序は保証されていますか?
- 19. TensorflowのQueueBase.enqueue_manyはスレッド間で順序を保持しますか?
- 20. boost :: asio :: io_serviceはハンドラの順序を保持しますか?
- 21. Hibernate HQL Selectはテーブルの順序を保持しますか?
- 22. HashSetは列挙間の順序を保持しますか?
- 23. リストの順序
- 24. LinkedHashMapのkeySet()から作成されたArrayListは、挿入順序を保持していますか?
- 25. xmlns要素の順序は関係しますか
- 26. XMLは要素の順序を気にしますか?
- 27. アルファベット順のリンクされたリストが順序通りでない
- 28. 要素の順序を変更する
- 29. JSONデータから順序なしリストを生成しますか?
- 30. 順序付きリストと順序付けられていないリンクリストの検索
より具体的にする必要があります。 JSONはデータ交換形式で、基本的に**テキスト**です。キャラクターは自分の位置を任意に変えません。あなたはそれをあなたが送ったのと同じ方法で受け取ります。 –
私はjson.orgの公式のJSON構文に従います。 JSONには「リスト」はありません。それは "配列"と "オブジェクト"を持っています。 –