JS - 创建动态json对象

时间:2014-02-24 19:02:32

标签: javascript json

我想创建一个具有以下结构的嵌套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结构...

2 个答案:

答案 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"]

注意: 我之前用“年”写了这些年,因为如果你只为一个变量写一个数字就会导致错误。