現在、JSONについて学習しており、入れ子になっているデータを取得しようとしています。
"id"と "city"を取得したい。
FIXED - (javascript)入れ子になったJSONデータの解析に失敗しました
は、ここに私のコードです:
var url = "jsonURL";
$.getJSON (url, function(b) {
for (var i = 0; i < b.friends.data.length; i++) {
var data = b.friends.data[i];
if (data.id == undefined) {
html+= "<td id='id'> - </td>";
}
else {
html+= "<td id='id'>" + data.id + "</td>";
}
if (data.location.location.city == undefined) {
html+= "<td id='city'> - </td>";
}
else {
html+= "<td id='city'>" + data.location.location.city + "</td>";
}
}
}
とJSONは、次のようになります。
{ "friends": { "data": [ { "id": "friend1", "location": { "location": { "city": "Tangerang", "country": "Indonesia" }, "id": "1" } }, { "id": "friend2", "location": { "location": { "city": "Makassar", "country": "Indonesia" }, "id": "2" } } ], }, "id": "myID" }
問題:「ID」の合計データを約600
私はないは「都市」を取得しようとするんさ場合、ループは罰金です。
もしiがならばなら、 "id"のルーピングは4つのデータしか表示しません。
結果は
"Uncaught TypeError: Cannot read property 'location' of undefined"
です。何が間違っているのでしょうか?
UPDATE
=========================
は、固定されました。私は
data.location == undefined || data.location.location == undefined || data.location.location.city == undefined
あなたは私が示したデータ処理するために働い示されたコード:https://jsfiddle.net/d2mL7stp/を。 (あなたの関数内のコードはJSONを扱っていません: '$ .getJSON()'メソッドはJSONを解析して(ネストされた)オブジェクトを作成し、そのオブジェクトを 'b'引数で関数に渡します) – nnnnnn
合計データが約600の場合、ループは4つのデータしか表示しません。また、「都市」を削除すると、すべて正常になります。 – Igniel
JSON *で動作しない部分が質問に表示されていないと言っていますか? – nnnnnn