我想创建一个具有以下结构的嵌套JSON-Object:
[{
"date" : "2011",
"imgs" : [
{"path" : "img1.jpg"},
{"path" : "img2.jpg"},
{"path" : "img3.jpg"}
]
},{
"date" : "2012",
"imgs" : [
{"path" : "img4.jpg"},
{"path" : "img5.jpg"},
{"path" : "img6.jpg"}
]
}]
依旧......
我有一个JSON对象,其中包含图像路径和时间戳。 2011年图片中的所有路径都应保存在嵌套的2011对象中。 2012年2012年的所有图片。
但我不知道如何创建imgs结构...
答案 0 :(得分:0)
的 jsFiddle Demo
强> 的
要重新创建您的确切示例,您可以像这样编码:
var json = [];
var imgCount = 1;
var date = 2011;
var imageSets = 2;
for(var i = 0; i < imageSets; i++){
json.push({ "date":date++,
"imgs":(function(){
var set = [];
for(var n = 0; n < 3; n++){
set.push({"path":"img"+(imgCount++)+".jpg"});
}
return set;})()
);
}
如果您需要更动态的路径,那么您可以将图像放在数组中,而不是使用imgCount
作为确切数字,您只需引用数组中存储的URL即可。同样可以使用date,而不是date ++,它是对数据数组的引用,其中索引是这里看到的日期变量。
如果事情变得更复杂,你总是可以在课堂之外建立这个结构。
答案 1 :(得分:0)
我认为以这种方式组织数据会更好:
var year2011 = {
"path1": "img1.jpg",
"path2": "img2.jpg",
"path3": "img3.jpg"
}
var year2012 = {
"path1": "img4.jpg",
"path2": "img5.jpg",
"path3": "img6.jpg"
}
这简单得多。 您可以像这样编写对象的构造函数:
var Year = function (path1, path2, path3) {
this[0] = path1;
this[1] = path2;
this[2] = path3;
}
然后调用它传递要添加为参数的路径:
var year2013 = new Year("img7.jpg", "img8.jpg", "img9.jpg");
这会导致:
year2013 = {
"path1": "img7.jpg",
"path2": "img8.jpg",
"path3": "img9.jpg"
}
你也可以像这样组织这些路径:
var year2011 = ["img1.jpg","img2.jpg","img3.jpg"],
year2012 = ["img4.jpg","img5.jpg","img6.jpg"]
注意:强> 我之前用“年”写了这些年,因为如果你只为一个变量写一个数字就会导致错误。