使用jQuery解析嵌套JSON中的第二级
我一直在环顾四周,似乎有一些关于如何做类似事情的例子,但我尝试了不同的方法,还没有找到有效的解决方案 我有这个JSON文件:使用jQuery解析嵌套JSON中的第二级,jquery,json,parsing,Jquery,Json,Parsing,我一直在环顾四周,似乎有一些关于如何做类似事情的例子,但我尝试了不同的方法,还没有找到有效的解决方案 我有这个JSON文件: [ { "name": "tool 1", "basic":[{ "description": "text", "color": "red" }] }, { "name": "tool 2", "basic":[{ "description": "text", "col
[
{
"name": "tool 1",
"basic":[{
"description": "text",
"color": "red"
}]
},
{
"name": "tool 2",
"basic":[{
"description": "text",
"color": "red"
}]
}
]
所以我使用jQuery来解析它,我的代码如下所示:
$.getJSON("/js/data.json", function(data) {
$.each(data, function(key,val) {
console.log(val.name);
});
});
它适用于第一级项目,如“名称”;但是如果我想用“描述”和“颜色”做同样的事情,似乎不起作用,没有为每一个单独的“每个…”做一个,在主要的一个里面
我试图找到一个简单而优雅的解决方案,例如:
console.log(val.basic.color);
但它似乎不起作用(“未定义”。)
有什么想法或建议吗?因为
val.basic
是一个数组,所以需要对它进行循环
$.getJSON("/js/data.json", function(data) {
$.each(data, function(key,val) {
console.log(val.name);
$.each(val.basic, function(index, basic) {
console.log(basic.description, basic.color);
});
});
});
如果您只关心第一个元素,则可以为其编制索引:
console.log(val.basic[0].description, val.basic[0].color);
感谢Barmar,我想为其他人发布解决方案 这就是JSON现在的格式,删除
[]
以删除数组:
[
{
"name": "tool 1",
"basic_info":{
"description": "text 1",
"color": "blue"
},
"advanced":{
"description": "text 1 advanced",
"color": "blue advanced"
}
},
{
"name": "tool 2",
"basic_info":{
"description": "text 1",
"color": "red"
},
"advanced":{
"description": "text 2 advanced",
"color": "red advanced"
}
}
]
这是我用来访问第二级值的代码:
$.getJSON("/js/data.json", function(data) {
$.each(data, function(key,val) {
console.log(val.basic_info.color);
});
});
非常感谢。也许我的JSON格式不正确。我这样做是为了能够识别某些层次/子层次和组值。但我更希望能够访问每个项目,而不依赖于它所在的级别,而无需再次循环。您有什么建议吗?如果只有一项,请不要将其放入数组中。使其成为
“basic”:{“description”:“text”,“color”:“red”}
。那么你最初的尝试就成功了。