2014-02-24 65 views
-2

我想創建一個嵌套的JSON-對象結構如下:JS - 創建動態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年的照片在2012年

但我不知道我怎麼可以創建IMGS結構...

+0

看起來你已經創建了JSON。你從哪裏轉換數據? – zzzzBov

+1

無法分辨您需要什麼或卡在哪裏。 –

+0

可能重複:[重新構造JSON](http://stackoverflow.com/questions/21034128/re-structuring-a-json/21035282#21035282)。 – Beterraba

回答

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 ++,它是對數據數組的引用,其中索引是這裏所看到的日期變量。

如果情況變得更加複雜,您可以始終使用這個結構。

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

注意: 我已經寫了「年」之前的年份,因爲如果你只寫一個變量的數字,它會導致一個錯誤。