2012-09-07 17 views
0

我有這樣的:價值得到由JSONObject的構造重新排列

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", 
    } 

新秩序是可重複的,在同一意味着每個執行結果(貌似隨機)重排。

回答

1

這對我來說看起來不像是有效的JSON。首先,圍繞整個字符串沒有{}[]。其次,它看起來好像與options相關的數據應該位於內部,並且數組([])不是對象({})。如果它是一個數組,那麼這個訂單將被保留下來,而這些值只是被聲明爲屬性,並不能保證它們的順序。

+0

是的,原諒我的語法。爲了舉例,我只是僞造了一塊JSONArray。我會嘗試把它作爲一個數組,看看是否保留了順序。謝謝 – Matt

1

在json序列中的字段並不重要,只有它們的嵌套。

+0

我明白了。那麼在JSON中沒有辦法保留序列? – Matt

+0

No.JSON格式不支持字段順序 – Yahor10

1

您的示例Strings無效的JSON。您有一個裸露的頂級字段options,並且它的字段沒有值。

A javascript object,它是JSON表示,特別是JSONObject,不保證字段的排序。

JSONObject javadoc

一個JSONObject是名稱/值對的無序集合。

可以通過使用數組維護排序。因此,如果你的數據是或可以表示爲一個數組 - 從你的例子看起來像一個數組 - 然後元素將保持的順序。