2017-02-05 38 views
1

比方說,我有一個JSON數據集的形式:提升價值,以JSON數據集

{ "fruits": { 
    "apple": { 
     "color": red, 
     "size": small 
    } 
    "orange": { 
     "color": orange, 
     "size": small 
    } 
} 

如何將添加一個額外的名稱數據點(使用類似JavaScript來解析數據),以每一個讓他們看起來像這樣:

{ "fruits": { 
    "apple": { 
     "color": red, 
     "size": small, 
     "name": apple 
    } 
    "orange": { 
     "color": orange, 
     "size": small, 
     "name": orange 
    } 
} 

我知道這看似多餘同時擁有ID和名稱值是水果的名稱,但我需要這個結構我工作的程序。有什麼建議麼?第一

回答

2

有幾件事情,你的屬性應該是在引號(除非它們是變量,但我不認爲是這樣,即:

"apple": { 
    "color": "red", 
    "size": "small" 
} 

而你需要你的兩個水果之間的逗號。

現在,所有你需要做的是循環每個水果和添加一個新的屬性等於它的名字:

for (var property in data.fruits) { 
    if (data.fruits.hasOwnProperty(property)) { 
     data.fruits[property].name = property; 
    } 
} 

方括號允許你訪問一個動態或可變PR operty名稱,這使得設置name屬性非常簡單。有關如何迭代數組,請參閱this answer

下面的片段演示代碼在行動:

var data = { 
 
\t "fruits": { 
 
\t \t "apple": { 
 
\t \t \t "color": "red", 
 
\t \t \t "size": "small" 
 
\t  }, 
 
\t \t "orange": { 
 
\t \t \t "color": "orange", 
 
\t \t \t "size": "small" 
 
\t \t } 
 
\t } 
 
} 
 

 

 

 
for (var property in data.fruits) { 
 
    if (data.fruits.hasOwnProperty(property)) { 
 
\t \t data.fruits[property].name = property; 
 
    } 
 
} 
 

 

 
console.log(data);

+0

謝謝!有效。 – ch1maera