2016-04-15 24 views
0

我有一個很長的數據列表的JSON,我需要添加硬編碼ID(靜態)。我想知道如何在像gulp這樣的工具中自動執行此過程?我希望它給任務一個文件並修改其內容(如下所示),然後用更新的數據永久保存該文件。自動修改JSON數據並保存在構建

這就是數據的模樣,例如: -

[ 
    { 
    "title": "Lorem ipsum", 
    "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit" 
    }, 
    { 
    "title": "Maecenas ac elit", 
    "text": "Maecenas ac elit vitae lorem interdum tincidunt" 
    } 
] 

這裏就是我正在尋找的回報: -

[ 
    { 
    "id" : "1", 
    "title": "Lorem ipsum", 
    "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit" 
    }, 
    { 
    "id" : "2", 
    "title": "Maecenas ac elit", 
    "text": "Maecenas ac elit vitae lorem interdum tincidunt" 
    } 
] 
+0

你在使用什麼情況下該JSON?如果你使用吞嚥,它需要永久保存在某個地方嗎? – Shakespeare

+0

@OwenAyres,是我永久保存這些數據,在將來我再次獲得相同的數據,我需要靜態添加ID :( – Syed

回答

1

使用Array#forEach(),並且該索引爲id屬性遞增。

var array = [{ "title": "Lorem ipsum", "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit" }, { "title": "Maecenas ac elit", "text": "Maecenas ac elit vitae lorem interdum tincidunt" }]; 
 

 
array.forEach(function (a, i) { 
 
    a.id = (i + 1).toString(); 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

+0

感謝工作。獲取Id的現在添加:)可以在字符串中添加數字( 「2」)並移到「標題」上面? – Syed

+1

字符串是沒有問題的。但對象有(直到es6)沒有秩序。如果你想改變orde,那麼每個n對象都必須按照想要的順序進行重建。我不推薦。 –

+1

謝謝..這是非常有幫助的。 – Syed

0

,如果你的JSON對象的ID被分配排序順序則沒有必要將循環翻一番,使用索引+ 1

例如:http://json.live/173fqW

var arr = [{},{},{},{}]; 

for(var i = 0; i < arr.length; i++) 
{ 
    var obj = arr[i]; 
    var id = i+1; //<<-- this is the ID (array stars from 0 we added +1 to start from 1 
}