1

我有这样的 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"
            }
        },

    ]
}

现在我想将其转换为

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);
}

但它似乎不起作用,我的代码有什么问题吗?

4

2 回答 2

4

您正在尝试编辑尚不存在的对象。

您要做的第一件事是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);
 }
于 2013-03-12T14:27:14.183 回答
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 
    }; 
});
于 2013-03-12T14:38:27.733 回答