Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS-创建动态json对象_Javascript_Json - Fatal编程技术网

Javascript JS-创建动态json对象

Javascript JS-创建动态json对象,javascript,json,Javascript,Json,我想创建一个具有以下结构的嵌套JSON对象: [{ "date" : "2011", "imgs" : [ {"path" : "img1.jpg"}, {"path" : "img2.jpg"}, {"path" : "img3.jpg"} ] },{ "date" : "2012", "imgs" : [ {"path" : "img4.jpg"},

我想创建一个具有以下结构的嵌套JSON对象:

 [{ 
    "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年的所有照片

但我不知道如何创建imgs结构…

要重新创建您的确切示例,您可以这样编写:

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;})()
 );
}
var Year = function (path1, path2, path3) {
  this[0] = path1;
  this[1] = path2;
  this[2] = path3;
}
var year2011 = ["img1.jpg","img2.jpg","img3.jpg"],
    year2012 = ["img4.jpg","img5.jpg","img6.jpg"]
var json=[];
var imgCount=1;
var日期=2011年;
var图像集=2;
对于(var i=0;i
如果您需要一个更动态的路径,那么您可以将图像放在一个数组中,而不是使用
imgCount
作为一个精确的数字,您可以只引用数组中存储的url。date也可以这样做,它是对数据数组的引用,而不是date+,其中索引是此处显示的日期变量


如果事情变得更复杂,你可以用类来构建这个结构。

我认为最好用这种方式组织数据:

var year2011={
“路径1”:“img1.jpg”,
“路径2”:“img2.jpg”,
“路径3”:“img3.jpg”
}
2012年风险值={
“路径1”:“img4.jpg”,
“路径2”:“img5.jpg”,
“路径3”:“img6.jpg”
}
这要简单得多。 您可以像这样为对象编写构造函数:

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;})()
 );
}
var Year = function (path1, path2, path3) {
  this[0] = path1;
  this[1] = path2;
  this[2] = path3;
}
var year2011 = ["img1.jpg","img2.jpg","img3.jpg"],
    year2012 = ["img4.jpg","img5.jpg","img6.jpg"]
然后通过要添加为参数的路径调用它:

 var year2013 = new Year("img7.jpg", "img8.jpg", "img9.jpg");
这将导致:

year2013 = {
  "path1": "img7.jpg",
  "path2": "img8.jpg",
  "path3": "img9.jpg"
}
你也可以这样组织路径:

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;})()
 );
}
var Year = function (path1, path2, path3) {
  this[0] = path1;
  this[1] = path2;
  this[2] = path3;
}
var year2011 = ["img1.jpg","img2.jpg","img3.jpg"],
    year2012 = ["img4.jpg","img5.jpg","img6.jpg"]
注意:
我用“年”写了这些年之前,因为如果您只为变量写入一个数字,则会导致错误。

看起来您已经创建了JSON。您从何处转换数据?无法确定您需要什么或卡在何处。可能重复:。您刚刚创建了它。您是指用程序/脚本创建它吗?如果是,您的起点是什么。W这是您从first获得的值。