2011-10-22 73 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]); 
 
}

相关问题