2011-10-22 38 views
56

Tôi đang tìm cách lặp qua một mảng JSON và hiển thị khóa và giá trị.Vòng lặp và nhận cặp khóa/giá trị cho mảng JSON bằng cách sử dụng jQuery

Nó phải là một phiên bản đơn giản của các bài sau đây, nhưng tôi dường như không có cú pháp chính xác: jQuery 'each' loop with JSON array

Tôi cũng chứng kiến ​​sự bài Get name of key in key/value pair in JSON using jQuery?, nhưng nó cũng có vẻ như rất nhiều mã cho một hoạt động đơn giản.

này minh họa những gì tôi đang tìm kiếm (nhưng nó không hoạt động):

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); 
     }); 

Không có yêu cầu jQuery bắt buộc, nhưng nó có sẵn. Tôi cũng có thể cấu trúc lại JSON nếu nó cắt giảm mã yêu cầu.

+2

Bạn cần phải phân tích cú pháp JSON để một đối tượng JavaScript đầu tiên. –

Trả lời

133

Bạn có một chuỗi đại diện cho một đối tượng JavaScript được tuần tự hóa JSON. Bạn cần phải deserialize nó trở lại một đối tượng JavaScript trước khi có thể lặp qua các thuộc tính của nó. Nếu không, bạn sẽ lặp qua từng ký tự riêng lẻ của chuỗi này.

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

Tuyệt vời. Tôi đã thêm var result = $ .parseJSON (resultJSON); và bây giờ nó hoạt động. – JStark

+2

Giải thích bằng văn bản. –

+0

@Darin cách nhận giá trị "chỉ mục"? –

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

Giải pháp tốt nhất và hoàn hảo cho vấn đề này:

Tôi đã thử các jQuery với các câu trả lời thành công Ajax, nhưng nó không hoạt động vì vậy tôi đã phát minh của riêng tôi và cuối cùng nó hoạt động!

Click here to see the full solution

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

Bạn có thể nhận các giá trị trực tiếp trong trường hợp của một mảng như thế này:

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

Sau đây nên làm việc cho một JSON trở lại chuỗi. Nó cũng sẽ làm việc cho một mảng kết hợp dữ liệu.

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

Chuỗi 'JSON' phải được phân tích thành đối tượng 'JSON'. – mythicalcoder

2

Phân tích chuỗi JSON và bạn có thể lặp qua các phím.

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

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

Các vấn đề liên quan