2011-10-22 114 views
56

我正在尋找循環遍歷JSON數組並顯示鍵和值。使用jQuery循環並獲取JSON數組的鍵/值對

應該是以下職位的簡化版本,但我似乎沒有有語法正確:jQuery 'each' loop with JSON array

我也看了後Get name of key in key/value pair in JSON using jQuery?,但它也似乎像很多代碼爲一個簡單的活動。

這說明了什麼我正在尋找(但不工作):

var result = '{"FirstName":"John","LastName":"Doe","Email":"[email protected]","Phone":"123 dead drive"}'; 
$.each(result, function(k, v) { 
      //display the key and value pair 
      alert(k + ' is ' + v); 
     }); 

沒有強制jQuery的要求,但它是可用的。如果它削減了所需的代碼,我也可以重構JSON。

+2

你必須首先JSON解析爲JavaScript對象。 –

回答

133

您有一個表示JSON序列化JavaScript對象的字符串。在能夠遍歷其屬性之前,您需要將其反序列化回JavaScript對象。否則,你將循環這個字符串的每個單獨的字符。

var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"[email protected]","Phone":"123 dead drive"}'; 
var result = $.parseJSON(resultJSON); 
$.each(result, function(k, v) { 
    //display the key and value pair 
    alert(k + ' is ' + v); 
}); 

Live demo

+0

非常好。我加了var result = $ .parseJSON(resultJSON);現在它可以工作。 – JStark

+2

寫得很好的解釋。 –

+0

@Darin如何獲得「索引」值? –

17
var obj = $.parseJSON(result); 
for (var prop in obj) { 
    alert(prop + " is " + obj[prop]); 
} 
0

此問題的最好的和完美的解決方案:

我嘗試了jQuery與阿賈克斯成功響應,但它不工作,所以我發明了我自己,終於它的工作原理!

Click here to see the full solution

var rs = '{"test" : "Got it perfect!","message" : "Got it!"}'; 
eval("var toObject = "+ rs + ";"); 
alert(toObject.message); 
6

您可以直接在一個陣列的情況下,這樣得到的數值:

var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"[email protected]","Phone":"123 dead drive"}'; 
var result = $.parseJSON(resultJSON); 
result['FirstName']; // return 'John' 
result['LastName']; // return ''Doe' 
result['Email']; // return '[email protected]' 
result['Phone']; // return '123' 
5

下應爲JSON工作返回的字符串。它也適用於數據的關聯數組。

for (var key in data) 
    alert(key + ' is ' + data[key]); 
+0

'JSON'字符串必須被解析爲'JSON'對象。 – mythicalcoder

2

解析JSON字符串,您可以遍歷按鍵。

var resultJSON = '{"FirstName":"John","LastName":"Doe","Email":"[email protected]","Phone":"123 dead drive"}'; 
 
var data = JSON.parse(resultJSON); 
 

 
for (var key in data) 
 
{ 
 
    //console.log(key + ' : ' + data[key]); 
 
    alert(key + ' --> ' + data[key]); 
 
}