我有一個JSON字符串,我使用json2.js庫解析爲JSON對象。試圖在JavaScript中對我的json中的項目進行排序
var parsed = JSON.parse(jsonstring);
後來我做了一些神奇的事情,向用戶顯示數據。包含的數據是幾條消息。在所有瀏覽器中,它們按正確的順序排序。但是在IE9中,順序是相反的。從舊消息到新消息,而不是先發送新消息。
我讀過,解析結果的順序不固定,取決於JavaScript版本。所以我試圖按照我想要的方式對項目進行排序,但它不起作用。
我目前做的:
var parsed = JSON.parse(feeds);
parsed = sortJSON(parsed, "created");
function sortJSON(data, key) {
return data.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
但我在控制檯中出現以下錯誤:
對象不支持屬性或方法 '排序'
所以我猜測是由於JSON對象的結構,我的排序方法不正確。所以問題是'我需要改變我的排序方法,以便它的工作?
我的JSON字符串的結構:
{"<ID>":{"text":"...","user":"...","created":"<date>",
"subject":"","url":"...","img_class":".."},
"<ID>":{"text":"...","user":"...","created":"<date>","subject":"",
"url":"...","img_class":"..."}, <MORE MESSAGES>
}
對象是不是數組。特別是,對象是無序的。 – SLaks 2013-05-06 13:56:45
不是將結果作爲單個JSON對象返回,而是將它們作爲數組返回。也就是說,服務器響應看起來像'[{「foo」},{「goo」},...]'而不是'{{「foo」},{「goo」},...} – Bucket 2013-05-06 13:57:41