我想排序JSON而不重新排序數組。 JSON的樣子:有沒有一種方法來排序JSON對象,而不重新排序它裏面的數組?
{
"objectid":"589a399724bd631d0424265a",
"mappingerrors":[
],
"timestamp":"UCT",
"models":[
{
"models4":"589a399724bd631d",
"models1":"AAAA",
"models3":"244",
"models5":"7ee92c958a051e66f19d6561575c5642",
"models2":"01945610",
"values":[
{
"11":"YYYY",
"1":"A",
"9":"B",
"5":"XXXX",
"3":2,
"10":239.804,
"6":"C",
"2":"D",
"4":"2017-02-03T21:53Z",
"8":"MSFT",
"7":"TTTT"
}
],
"models6":"2017-02-03T21:53Z"
}
]
}
現在我想這個排序的下面:
{
"mappingerrors":[
],
"models":[
{
"models1":"AAAA",
"models2":"01945610",
"models3":"244",
"models4":"589a399724bd631d",
"models5":"7ee92c958a051e66f19d6561575c5642",
"models6":"2017-02-03T21:53Z",
"values":[
{
"1":"A",
"2":"D",
"3":"2",
"4":"2017-02-03T21:53Z",
"5":"XXXX",
"6":"C",
"7":"TTTT",
"8":"MSFT",
"9":"B",
"10":"239.804",
"11":"YYYY"
}
]
}
],
"objectid":"589a399724bd631d0424265a",
"timestamp":"UCT"
}
我試着用下面的代碼,但它沒有給出相應的結果。
function sortObject(jsonObject) {
var sorted = {},
key, a = [];
for (key in jsonObject) {
if (jsonObject.hasOwnProperty(key)) {
a.push(key);
}
}
a.sort();
for (key = 0; key < a.length; key++) {
sorted[a[key]] = jsonObject[a[key]];
}
return sorted;
}
有沒有辦法通過忽略JSON對象內的數組來做到這一點?
這沒有意義。 JSON中的對象不是有序的結構,你爲什麼要對它們進行「排序」?另外*「沒有給出適當的結果」*不是[mcve]。 – jonrsharpe
JSON的文本表示讓你錯覺它們意味着對對象的鍵進行排序。在JavaScript對象和JSON規範中都明確指出它們是**無序的** [RFC7159](http://www.rfc-editor.org/rfc/rfc7159.txt) –
相關:[有沒有一種方法來排序/在JavaScript對象中的順序鍵?](/ questions/9658690 /) – Stobor