有没有一种方法可以对JSON对象进行排序,而不必对其中的数组进行重新排序?
我希望对JSON进行排序,而不重新排序数组。JSON看起来像:有没有一种方法可以对JSON对象进行排序,而不必对其中的数组进行重新排序?,json,sorting,Json,Sorting,我希望对JSON进行排序,而不重新排序数组。JSON看起来像: { "objectid":"589a399724bd631d0424265a", "mappingerrors":[ ], "timestamp":"UCT", "models":[ { "models4":"589a399724bd631d01234567", "models1":"AAAA", "models3":"
{
"objectid":"589a399724bd631d0424265a",
"mappingerrors":[
],
"timestamp":"UCT",
"models":[
{
"models4":"589a399724bd631d01234567",
"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":"589a399724bd631d01234567",
"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;
}
函数sortObject(jsonObject){
var排序={},
键,a=[];
for(输入jsonObject){
if(jsonObject.hasOwnProperty(键)){
a、 按键;
}
}
a、 排序();
用于(键=0;键
有没有办法忽略JSON对象中的数组呢?您可以使用下面的代码对数组进行排序
var无序={
“objectid:“589a399724bd631d0424265a”,
“映射错误”:[
],
“时间戳”:“UCT”,
“模型”:[{
“型号4”:“589a399724bd631d01234567”,
“模型1”:“AAAA”,
“模型3”:“244”,
“型号5”:“7EE92C958A051E66F19D656157C5642”,
“型号2”:“01945610”,
“价值观”:[{
“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”
}],
“型号6”:“2017-02-03T21:53Z”
}]
};
log(JSON.stringify(无序));
var有序=无序;
var modelsOrder={};
var valuesOrder={};
Object.keys(无序.models[0]).sort().forEach(函数(键){
modelsOrder[key]=无序。models[0][key];
});
Object.keys(无序的.models[0].values).sort().forEach(函数(键){
valuesOrder[key]=无序。模型[0]。值[key];
});
ordered.models[0]=modelsOrder;
有序。模型[0]。值=valuesOrder;
log(JSON.stringify(ordered))代码>您可以使用以下代码来订购阵列
var无序={
“objectid:“589a399724bd631d0424265a”,
“映射错误”:[
],
“时间戳”:“UCT”,
“模型”:[{
“型号4”:“589a399724bd631d01234567”,
“模型1”:“AAAA”,
“模型3”:“244”,
“型号5”:“7EE92C958A051E66F19D656157C5642”,
“型号2”:“01945610”,
“价值观”:[{
“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”
}],
“型号6”:“2017-02-03T21:53Z”
}]
};
log(JSON.stringify(无序));
var有序=无序;
var modelsOrder={};
var valuesOrder={};
Object.keys(无序.models[0]).sort().forEach(函数(键){
modelsOrder[key]=无序。models[0][key];
});
Object.keys(无序的.models[0].values).sort().forEach(函数(键){
valuesOrder[key]=无序。模型[0]。值[key];
});
ordered.models[0]=modelsOrder;
有序。模型[0]。值=valuesOrder;
log(JSON.stringify(ordered))代码>这没有意义。JSON中的对象不是有序结构,为什么要对它们进行“排序”?另外,“没有给出适当的结果”也不是一个错误。JSON的文本表示让您产生一种错觉,即它们意味着对对象的键进行排序。在JavaScript对象和JSON规范状态中,都清楚它们是无序相关的:也相关:这没有意义。JSON中的对象不是有序结构,为什么要对它们进行“排序”?另外,“没有给出适当的结果”也不是一个错误。JSON的文本表示让您产生一种错觉,即它们意味着对对象的键进行排序。在JavaScript对象和JSON规范状态中,明确它们是无序相关的:也相关:感谢anoop,它很有帮助,只需要修改值部分,函数_sortJson(无序){var ordered=unordered;var modelsOrder={};var valuesOrder={};object.keys(unordered.models[0]).sort().forEach(函数(键){modelsOrder[key]=unordered.models[0][key];});Object.key(unordered.models[0].values[0]).sort().forEach(函数(键){valuesOrder[key]=unordered.models[0]=modelsordered.models[0]=ordered.models[0].values[0]=valuesOrder;返回JSON.stringify(ordered);})感谢anoop,它很有帮助,只需要修改值部分,函数_sortJson(无序){var ordered=unordered;var modelsOrder={};var valuesOrder={};Object.keys(unordered.models[0]).sort().forEach(函数(键){modelsOrder[key]=unordered.models[0][key];});Object.keys(unordered.models[0].values[0]).sort().forEach(函数(键){valuesOrder[key]=unordered.models[0]。值[0][key];});ordered.models[0]=modelsOrder;ordered.models[0]。值[0]=valuesOrder;返回JSON.stringify(ordered);}