0

ネストされたjsonオブジェクトの配列をループしようとしています..

ループは次のとおりです。

        $("#test").text("");
        for(var i=0;i<obj.length;i++){
            $("#test").append(obj[i].line_item + ", ");
            for(var j=0;j<obj[i].length;j++){
                $("#test").append(obj[i][j].iid + ", ");
                $("#test").append(obj[i][j].name + ", ");
                $("#test").append(obj[i][j].price + ", ");
                $("#test").append(obj[i][j].lid + ", ");
                $("#test").append(obj[i][j].picture + "<br />");
            }//for for
        }//for

console.log エラーは表示されません。php-script をエコーすると、次の出力が得られます。

[{"line_item":"base","0":
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images\/mix.jpg"},
"1":{"iid":"2","name":"green","price":"30","lid":"1","picture":"images\/green.jpg"}}]

問題: 配列をループすると、html ファイルに base という出力しか得られません。

私の質問: 内部配列オブジェクトを取得するにはどうすればよいですか?

4

2 に答える 2

0

これは、配列ではなくオブジェクトを使用しているためです。次のことはできません。

 obj[i].length

これを解決する簡単な方法は、アイテムを配列内に配置することです。サンプル JSON:

[{"line_item":"base", "items": [
{"iid":"1","name":"mix","price":"30","lid":"1","picture":"images\/mix.jpg"},
{"iid":"2","name":"green","price":"30","lid":"1","picture":"images\/green.jpg"}]}]

コードを次のように変更します。

$("#test").text("");
for(var i=0;i<obj.length;i++){
  $("#test").append(obj[i].line_item + ", ");
  for(var j=0;j<obj[i]['items'].length;j++){
    var item = obj[i]['items'][j];
    $("#test").append(item.iid + ", ");
    $("#test").append(item.name + ", ");
    $("#test").append(item.price + ", ");
    $("#test").append(item.lid + ", ");
    $("#test").append(item.picture + "<br />");
  }//for for
}//for
于 2013-07-28T17:43:19.247 に答える