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の代わりに使用することもできます(新しい配列を生成するために、.foralert()

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 に答える