2014-01-06 96 views
1

我有一個(嵌套的)數據結構包含對象和數組。我如何提取信息,即訪問1,105,1055等特定或多個值(或鍵)?訪問/進程(嵌套)對象,使用AJAX JSON數組JQuery

例如:

[{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}}, 
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}}, 
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ] 

代碼是:對密鑰1.

$(document).ready(function() { 
var formURL = 'http://web.com/ajax.php?store=photo&action=jsoncategories'; 
     $.getJSON(formURL, function(json) { 
     $.each(json[0], function(i, object) { 
       $.each(object, function(property, value) { 
       console.log(property + "=" + value); 
       }); 
      }); 
     }); 
}); 

JSON [0]被遍歷數據什麼應該替換JSON [0]來提取陣列

的所有的數據密鑰

回答

1

下面是使用JavaScript在你的穿越元素。我認爲數據被加載並在你的代碼遍歷開始如下:

var json = [{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}}, 
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}}, 
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ]; 



for(var i=0, json_len=json.length; i< json_len; i+=1) 
{ 
    var j = json[i]; // Here you are accessing to the item of Array using index of item. 
    for(var k in j) 
    { 
     var d=j[k]; //Here you are accessing to the object using key pair. 
     for(var l in d) 
      console.log(k, ':', l, ':', d[l]); 
    } 
} 

你可以看到JSFIDDLY示例代碼執行。

如果你有很長的json數組,這個方法更好。因爲你的json變量是Array並且在數組元素之間遍歷應該使用for循環來完成。你的物品是物品,所以他們應該穿過for ... in。記住這是最好的方法。因爲for loopeach更快。這裏是jsperf中的comparison。如果您有任何問題,請隨時在此發表評論。

+0

thanx隊友的答案..但它並沒有返回值(見jsfiddle以及)爲k和l,而我正在取代console.log警報(k,':',l,':',d [l] );任何我失蹤..pleas讓我知道 – CodePlayer

+0

你使用Chrome嗎?如果是這樣,你打開控制檯窗口?如果你不能使用控制檯的外觀[這裏](http://jsfiddle.net/Antindexer/rF8Km/2/)。 – Khamidulla

+0

嗨thanx ..去吧.. – CodePlayer

2

您錯過了「卡車前」 另外,請嘗試使用console.log(property + "=" + value);而不是alert()

$.each(json, function(key, val) { 
    $.each(val, function(index, value){ 
     console.log(value); 
    }); 
}); 

也許像這樣:

$.each(json, function(key, val) { 
    $.each(val, function(key, val) { 
     console.log(val.url); 
    }); 
}); 
+0

thanx的變化..這工作正常到遍歷。我的實際問題是:什麼應該取代json [0]以提取數組 – CodePlayer

+0

的所有數據鍵json [0]只會返回數組中的第一個值,在這種情況下,它是一個對象。 – manta

+0

建議代碼的最後一部分根本不起作用。 – Khamidulla