2011-08-06 5 views
0

json構造であなたの助けが必要です! (私はそれが簡単だが、私はエラーが何であるか把握できません)。このコードでjavascriptのjsonファイルでノードにアクセスするのに役立ちます

私はアドレスのような各ブランチのためのいくつかの詳細と一緒に項目のリストを(レストランを言う)、含まれているJSONファイルを抱えています。私のjsファイルでは、特定のアイテムIDに一致するすべてのアドレスを印刷しようとしています。

私はそれにアクセスするためのJSONファイルとJSコードのサンプルを掲載します。ここ

はJSONファイルです:

..... 
success:function(data){ 
     $.each(data.items, function(i,item){ 
       if (item.item_id == 204) { 
      $("#results").append("<hr/>"); 
       $("#results").append("<span class='result' >" + item.details.address + "</span><br/>"); 
    } 
     }); 
    }, .... 

が、それは任意のものを印刷しません:

{ 
"items" : 
[ 

{ 
"item_id" :"204","details" :[{"country":"usa","city":"NY", "address":"bla bla bla"},{"country":"usa","city":"NY", "address":"another bla bla bla for the same id"}] 
}, 
{ 
"item_id" :"234","details" :[{"country":"usa","city":"NY", "address":"another bla bla bla"}] 
} 

] 
} 

、ここでは、そのファイルにアクセスするためのJSコードです。

あなたはどう思いますか? item.details以来

+0

は、if(item.item_id === "204") ''試す素晴らしい愛するだ –

答えて

1

は、あなたが実際にあなたがオブジェクトの配列を持っているので、あなたが実際にオブジェクトの配列のオブジェクトを持っているにもかかわらず、[{}, {}, {}]は、オブジェクトの配列である。すなわち、この場合には$ .eachを使用する必要はありません:pは。あなたはアドレスオブジェクトの詳細の配列を持っているので、オブジェクトの各配列は、0,1,2などのデフォルトのインデックスを持っているのに対し、各オブジェクトは、指定されたインデックスすなわち「アイテム」を持っている

またええ、あなたが経由でそれらにアクセスする必要がありますdetails[0]またはdetails[1]

チェックこのexample out on jsFiddle

for(var i =0;i<data.items.length;i++) { 

if (data.items[i].item_id == "204") { 
      $("#results").append("<hr/>"); 
       $("#results").append("<span class='result' >" + data.items[i].details[0].address + "</span><br/>"); 
    } 
} 
+0

。最初のアドレスが表示されている間に少しずつ小さな問題がありますが、すべてを1つずつ印刷したいと考えています。私は印刷ラインの前にfor-loopを置くべきだと思いますよね? – Fahd

+0

(var j = 0; j Fahd

+0

(VARのJ = 0; J " + data.items [。 i] .details [j] .address + "
"); } //これは問題ありません。 thx男: – Fahd

0

が配列である、あなたはあなたのJSONが有効であるので、それは問題ではありませんitem.details[0].address

1

を経由して、それを取得する必要があります。

{ 
    "items": [ 
     { 
      "item_id": "204", 
      "details": [ 
       { 
        "country": "usa", 
        "city": "NY", 
        "address": "bla bla bla" 
       }, 
       { 
        "country": "usa", 
        "city": "NY", 
        "address": "another bla bla bla for the same id" 
       } 
      ] 
     }, 
     { 
      "item_id": "234", 
      "details": [ 
       { 
        "country": "usa", 
        "city": "NY", 
        "address": "another bla bla bla" 
       } 
      ] 
     } 
    ] 
} 

http://jsfiddle.net/wKDUu/で変更された例を表示できます。以下のコードは、より動的なアプローチに対応するために詳細をループします。

success:function(data){ 
    var di = data.items;  
    for(var i=0;i<di.length;i++){ 
     var ii = di[i]; 
     if (ii.item_id == 204) {    
      $("#results").append("<hr/>"); 
      for(var a=0;a<ii.details.length;a++){ 
       $("#results").append("<span class='result' >" + ii.details[a].address + "</span><br/>"); 
      } 
     }   
    }  
}), 
関連する問題