我有一个HTML页面,其中包含一个字符串化的JSON对象。该对象具有以下结构:
{
"x":{
"key1":[],
"key2":{},
"keyN":{},
"myKey":{
"randomID238492":{
"items":[
{ "value":"zzzz" },
{ "value":"aaaa" },
{ ...}
]
}
}
}
}
我想将此对象替换为已对“项目”数组进行排序的对象。这是我将要知道的关于物体的东西:
是否存在一种清晰,有效的方法来将JSON对象替换为已对“项目”进行排序的对象?现在,我在页面呈现后通过使用以下jQuery函数来做到这一点:
$(function() {
var myData = $( "#myJSON_string" )[0]; // <script> node that contains the string
var myDataJSON = JSON.parse(myData.innerText); // JSON string
var myKeyJSON = myDataJSON["x"]["myKey"]; // object
var myArr = myKeyJSON[Object.keys(myKeyJSON)[0]]["items"]; // array to sort
// Now sort and revise. I'm leaving myCompare() out of the example for brevity
myKeyJSON[Object.keys(myKeyJSON)[0]]["items"] = myArr.sort(myCompare);
myDataJSON["x"]["myKey"] = myKeyJSON;
myDataJSON = JSON.stringify(myDataJSON);
myData.innerText = myDataJSON;
});
此方法有效,但似乎相当费力。例如,如果我可以在不解析的情况下修改“就地” JSON对象,然后重新对其进行字符串化,则可能会更好。
许多SO帖子,例如this one,都谈到了有关如何对JSON数组进行排序的一般问题。但是我看不到有人在这里提出具体问题。