0

私はこれを持っています:

String foo = 

    "options": {
      "1",
      "2",
      "3",
      "4",
      "5",
      "6",
      "7",
      "8",
      "9",
    }

ただし、JSONObjectコンストラクターはキーを再配置します。

new JSONObject(foo).toString() = 

    "options": {
      "6",
      "3",
      "7",
      "2",
      "5",
      "1",
      "4",
      "8",
      "9",
    }

新しい順序は再現可能です。つまり、各実行は同じ (一見ランダムな) 再配置になります。

4

3 に答える 3

1

json では、フィールドの順序は重要ではなく、ネストのみが重要です。

于 2012-09-07T14:15:30.453 に答える
1

あなたの例Stringsは無効な JSON です。トップレベルのフィールドがあり、そのフィールドoptionsには値がありません。

JavaScriptオブジェクト、それは JSON 表現であり、特に はJSONObject、フィールドの順序を保証しません。

JSONObject javadocから:

JSONObject は、名前と値のペアの順序付けられていないコレクションです。

配列を使用して順序を維持できます。したがって、データが配列であるか、配列として表現できる場合-例からは配列のように見えます-要素の順序は維持れます。

于 2012-09-07T14:16:47.570 に答える
1

それは私には有効な JSON のようには見えません。まず、文字列全体を囲む{}か、ありません。[]次に、 に関連付けられたデータoptionsは内部にある必要があり、配列 ( []) はオブジェクト ( {}) ではないようです。配列の場合、順序は保持されますが、値がプロパティとして宣言されているだけでは、順序は保証されません。

于 2012-09-07T14:17:13.750 に答える