Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以对JSON对象进行排序,而不必对其中的数组进行重新排序?_Json_Sorting - Fatal编程技术网

有没有一种方法可以对JSON对象进行排序,而不必对其中的数组进行重新排序?

有没有一种方法可以对JSON对象进行排序,而不必对其中的数组进行重新排序?,json,sorting,Json,Sorting,我希望对JSON进行排序,而不重新排序数组。JSON看起来像: { "objectid":"589a399724bd631d0424265a", "mappingerrors":[ ], "timestamp":"UCT", "models":[ { "models4":"589a399724bd631d01234567", "models1":"AAAA", "models3":"

我希望对JSON进行排序,而不重新排序数组。JSON看起来像:

{  
   "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);}