2013-12-12 59 views
0

由於某種奇怪的原因,當我解析我的JSON對象通過AJAX發送時,它會拋出對象的亂序。解析JSON對象變化的順序

$.post('get_notes', note_data, function(data){ 
    var notes_obj = $.parseJSON(data); 
}); 

當我CONSOLE.LOG數據,這是返回什麼:

{"502":{"text":"First Response","user_name":"Admin","date":"11-12-2013 9:21"}, 
"509":{"text":"Second Response","user_name":"Admin","date":"11-12-2013 9:22"}, 
"508":{"text":"Third Response","user_name":"Admin","date":"11-12-2013 9:24"}, 
"504":{"text":"Fourth Response","user_name":"Admin","date":"11-12-2013 9:24"}} 

這是正確的順序。注意日期正確升序。

當我CONSOLE.LOG notes_obj,這是它返回:

502: Object 
504: Object 
508: Object 
509: Object 

出於某種原因,$ .parseJSON()決定重新排序由ID輸出,而不是它是什麼日期我需要。

任何想法爲什麼會發生這種情況?

+1

對象屬性可能無法保留訂單...如果您想保留訂單,那麼您需要使用數組 –

+0

對象中沒有訂單 – adeneo

回答

1

JSON定義的對象有沒有順序到它們的屬性,所以它是完全可以接受的東西序列化屬性的任何順序。

以下是完全相同對象JSON:

{ 
    "question": "Life, the Universe, and Everything", 
    "answer": 42 
} 

{ 
    "answer": 42, 
    "question": "Life, the Universe, and Everything" 
} 

在評論你問

如何解決呢?

您停止依賴未定義的任何順序的東西的順序。你可以,例如,重新格式化你的反應那麼它是一個數組,因爲數組有順序:

[ 
    { "key": "502", "text": "First Response", "user_name": "Admin", "date": "11-12-2013 9:21" }, 
    { "key": "504", "text": "Fourth Response", "user_name": "Admin", "date": "11-12-2013 9:24" }, 
    { "key": "508", "text": "Third Response", "user_name": "Admin", "date": "11-12-2013 9:24" }, 
    { "key": "509", "text": "Second Response", "user_name": "Admin", "date": "11-12-2013 9:22" } 
] 

現在,而不是有各種鍵的對象,你有對象的數組,每個對象都有一個key財產(和其他信息)。

+0

我該如何解決它? – steeped

+0

@steeped:我在上面添加了一條建議。 –