Jquery 是否将json对象数据转换为json数组数据?
如何将json对象数据转换为json数组数据?比如说, 我在firebug上的控制台上有来自服务器的json对象数据Jquery 是否将json对象数据转换为json数组数据?,jquery,arrays,json,object,Jquery,Arrays,Json,Object,如何将json对象数据转换为json数组数据?比如说, 我在firebug上的控制台上有来自服务器的json对象数据 Object { 0={...}, 1={...}, 2={...}, more...} json字符串 { "items": { "0": { "pub_name": "News", "system_id": "57", "make_accessible": "0",
Object { 0={...}, 1={...}, 2={...}, more...}
json字符串
{
"items": {
"0": {
"pub_name": "News",
"system_id": "57",
"make_accessible": "0",
"count": "7",
"router": "#/post/news/list/"
},
"1": {
"pub_name": "upcoming events",
"system_id": "134",
"make_accessible": "0",
"count": "7",
"router": null
}
},
"total": 2
}
{
"items": [
{
"pub_name": "News",
"system_id": "57",
"make_accessible": "0",
"count": "7",
"router": "#/post/news/list/"
},
{
"pub_name": "upcoming events",
"system_id": "134",
"make_accessible": "0",
"count": "7",
"router": null
}
],
"total": 2
}
我需要把它转换成
[Object { pub_name="Main", system_id="50", make_accessible="0", more...}, Object { pub_name="estate", system_id="122", make_accessible="0", more...}, Object { pub_name="wines", system_id="125", make_accessible="0", more...}, 7 more...]
json字符串
{
"items": {
"0": {
"pub_name": "News",
"system_id": "57",
"make_accessible": "0",
"count": "7",
"router": "#/post/news/list/"
},
"1": {
"pub_name": "upcoming events",
"system_id": "134",
"make_accessible": "0",
"count": "7",
"router": null
}
},
"total": 2
}
{
"items": [
{
"pub_name": "News",
"system_id": "57",
"make_accessible": "0",
"count": "7",
"router": "#/post/news/list/"
},
{
"pub_name": "upcoming events",
"system_id": "134",
"make_accessible": "0",
"count": "7",
"router": null
}
],
"total": 2
}
有可能吗?解决这一问题的最佳方法是修复它是如何在服务器端生成的,可能是将Items结构转换为使用任何服务器端语言的数组 但是,如果javascript是您唯一的选择,那么您所需要做的就是迭代将它们分配给数组的对象键
var jsonstring = '{\
"items": {\
"0": {\
"pub_name": "News",\
"system_id": "57",\
"make_accessible": "0",\
"count": "7",\
"router": "#/post/news/list/"\
},\
"1": {\
"pub_name": "upcoming events",\
"system_id": "134",\
"make_accessible": "0",\
"count": "7",\
"router": null\
}\
},\
"total": 2\
}';
var data = JSON.parse(jsonstring);
console.log(data); // {items: Object, total: 2}
var tempArr = [];
for (key in data.items) {
tempArr[key] = data.items[key];
}
data.items = tempArr;
console.log(data); // {items: Array[2], total: 2}
如果包含jQuery,则可以使用$.makeArray()
是的,这是可能的。但是请注意,json与此无关。您需要迭代对象中的键,创建所需的数组。您将如何确定对象的元素名称?你从哪里得到“pub_name”和“system_id”?就因为这让我有点烦,根本没有“json对象”或“json数组”之类的东西。这些术语是不正确的。JSON是数据的传输格式(类似于CSV或XML)。JSON总是一个字符串。它可以表示对象或数组,但它本身始终是字符串。如果它不是字符串,就不是JSON。您拥有的是一个JavaScript对象和一个JavaScript数组。它可能是从JSON字符串中解析出来的,但它不是JSON。如果它有任何意义,请参阅我上面的编辑?@lauthiamkok:您首先是如何创建这个JSON字符串的?您可能已经能够以正确的格式将其返回给您。