2013-03-12 169 views
0

我有這樣如何更改JSON結構

{ 
    "nodes": [ 
     { 
      "node": { 
       "title": "Kieu Oanh", 
       "Image": "", 
       "view_node": "view", 
       "link": "drupal_dev/content/kieu-oanh" 
      } 
     }, 
     { 
      "node": { 
       "title": "Kieu Oanh", 
       "Image": "", 
       "view_node": "view", 
       "link": "drupal_dev/content/kieu-oanh" 
      } 
     }, 

    ] 
} 

JSON數據現在我想將其轉換爲

var rel_data = [{ 
    "title": "asa", 
    "Image": "sasa", 
    "view_node": "sajsjla" 
}, { 
    "title": "asa", 
    "Image": "sasa", 
    "view_node": "sajsjla" 
}] 

,這是我的代碼數據轉換爲rel_data

data = data.nodes; 
for (d in data) { 
    rel_data[d].title = data[d].node.title; 
    rel_data[d].image = data[d].node.Image; 
} 
for (d in rel_data) { 
    alert(rel_data[d].title); 
} 

但它似乎沒有工作,我的代碼有什麼問題嗎?

+0

這與JSON沒有任何特別的關係。 – 2013-03-12 14:27:38

回答

3

你正試圖編輯那些還沒有的對象。

您要做的第一件事是訪問rel_data,而沒有rel_data呢。你做的第二件事是你改變不存在的數組元素的屬性。

你的代碼應該是下面的工作:

data = data.nodes; 
rel_data = new Array(); // Create rel_data 
for(d in data) { 
     rel_data[d] = new Object(); // Create array element 
     rel_data[d].title= data[d].node.title; 
     rel_data[d].image= data[d].node.Image; 
} 

for(d in rel_data) { 
     alert(rel_data[d].title); 
} 
2

你也可以使用map代替for環(用於生成新的數組,你想要一個用於alert()

var rel_Data = data.nodes.map(function(item) { 
    return { 
     "title": item.node.title, 
     "Image": item.node.Image, 
     "view_node": item.node.view_node 
    }; 
});