我想排序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