2017-01-22 6 views
-1

JSONのキーと値のペアの順序に頼ることはできません。たとえば、JSONパーサーは法的にJSON配列の順序に頼ることはできますか?

{ 
    "anotherKey" : "anotherValue", 
    "someKey" : "someValue", 
    "evenAnotherKey" : "evenAnotherValue" 
} 

として

{ 
    "someKey" : "someValue", 
    "anotherKey" : "anotherValue", 
    "evenAnotherKey" : "evenAnotherValue" 
} 

を解釈することができますが、私はJSON 配列の順序に依存しているだろうか?たとえば、JSONパーサーは法的に

{ 
    "arrayKey" : ["secondElement", "firstElement1", "thirdElement"] 
} 

として

{ 
    "arrayKey" : ["firstElement", "secondElement", "thirdElement"] 
} 

を解釈するだろうか?私はそうは思わないだろうが、私の友人は私が間違っていたと私に言った。

+0

あなたはJSON配列について尋ねますが、JavaScriptコンパイラについて話します。あなたはJSONやJavaScriptを扱っていますか? – Quentin

+0

@Quentin私はパーサーを意味しました。私は質問を編集します。 – Bennett

答えて

1

はい、できます。配列が作られるので、順序は重要です!それがオブジェクトを配列から分けるものです。特にJSとJSONの場合。

0

アレイとリストは常に注文されます。それは配列とリストを持つ点です。その位置はで、インデックスはです。


ちなみに、ES5ではオブジェクトの順序(キーと値のペアと呼ばれるもの)も保証されています。しかし、簡単な方法ではありません。

オブジェクトの場合、数値であるキーは、非数値キーの前に順序付けされ、数値順に並べ替えられます。ただし、他のすべてのキーは挿入順であることが保証されています。したがって、次のオブジェクト:現在、すべてのブラウザがこれをサポートし、(バベルのような)すべてのjavascriptのクロスコンパイラがそれをサポートして、これをサポートしてではなく、Node.jsの

{ 
    "22" : "first", 
    hello : "world", 
    foo : "bar" 
} 

{ 
    hello : "world", 
    foo : "bar", 
    "22" : "first" 
} 

はとして返さなければなりません。

個人的に私は順序付けられたオブジェクトのような順序のないデータ構造を扱いたくありません。しかし、jsコミュニティが意見を異にするように見えます。たとえば、地図の順序を意図的にランダム化して、言語のインプリメンテーションからの不注意で安定した注文に頼らないようにします。

関連する問題