我有当前的JSON文件:
[{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]},
[{"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}
如何选择ID为1的数组并列出其中的每个'img_id',而不为其他数组重复?
编辑1: 我试图像这样解析它,但这段代码是错误的:
$("#button").click(function() {
$.getJSON("../path/to/json", function(data) {
$.each(data[0].images.img_id, function(i,data){
var new_data ="<p src='path/to/folder/"+images.img_id+"'></p>";
$(new_data).appendTo("#htmlTag");
});
}); return false;
});
非常感谢。
答案 0 :(得分:0)
我认为你在谈论参考资料。我不认为他们在JSON中是可能的。如果您严格需要它们并仍然希望对象的可读序列化 - 我建议您查看YAML
答案 1 :(得分:0)
您有一个对象数组,其中每个对象包含另一个对象数组。我假设您使用的JSON结构是:
var a = [{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]},
{"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}];
我还假设您使用的是JavaScript。
<强> PostEdit:强>
你的代码相当接近,我相信我的下面应该有用:
$("#button").click(function() {
$.getJSON("../path/to/json", function(data) {
$.each(data[0].images, function(i,data){
var new_data ="<p src='path/to/folder/" + data.img_id + "'></p>";
$(new_data).appendTo("#htmlTag");
});
});
return false;
});
我所做的只是将each
来电的第一个参数从data[0].images.img_id
更改为:data[0].images
。另外,我更改了new_data
的声明:
var new_data ="<p src='path/to/folder/"+images.img_id+"'></p>";
为:
var new_data ="<p src='path/to/folder/"+data.img_id+"'></p>";
请注意,每个回调函数中的参数“data”只是数组中的元素,而“i”是数组中该元素的索引。因此,数据是一个如下所示的对象:
{"img_id":1}
因此,您可以通过data.img_id
获取ID。希望这可以帮助。
答案 2 :(得分:0)
我认为你的JSON中有一个拼写错误......最后似乎缺少一个括号,并且在第2行的开头添加了一个。但是,假设你的意思是(并使用Javascript) :
var myJson = [{"id":"1","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]},
{"id":"2","images":[{"img_id":"1"},{"img_id":"2"},{"img_id":"3"}]}];
然后您可以像嵌套的Javascript对象一样访问您需要的任何内容。如果您只想访问ID等于1的对象,并且无法保证订单,则必须进行迭代:
for(var i = 0; i < myJson.length; i++){
if(myJson[i].id === "1"){
var imgs = myJson[i].images;
for(var j = 0; j < imgs.length; j++){
//do what you want with imgs[j].img_id
}
}
}