2012-05-05 19 views
23

Tôi có một đầu ra JSON như sau:JQuery Parsing JSON mảng

["City1","City2","City3"] 

Tôi muốn nhận được mỗi người trong số những cái tên thành phố, làm thế nào tôi có thể làm điều này?

$.getJSON("url_with_json_here",function(json){ 

}); 

EDIT:

$.getJSON('url_here', function(data){ 
    $.each(data, function (index, value) { 
     $('#results').append('<p>'+value+'</p>'); 
     console.log(value); 
    }); 
}); 

Trên đây dường như không có tác dụng, không có giá trị được xuất ra.

+0

Bạn đang sử dụng 'g etJSON() 'để tìm nạp JSON? Bởi vì sau đó nó nên đã được lấy. Khó giúp đỡ mà không có bất kỳ ví dụ mã nào. Bạn có phải là người mới mà bạn chưa bao giờ viết bất kỳ mã nào? – kapa

+0

xin vui lòng xem chỉnh sửa của tôi, tôi chỉ là nhầm lẫn làm thế nào để lấy các mục từ url –

Trả lời

44

getJSON() cũng sẽ phân tích cú pháp JSON cho bạn sau khi tìm nạp, do đó từ đó trở đi, bạn đang làm việc với một mảng Javascript đơn giản ([] đánh dấu một mảng bằng JSON). Tài liệu cũng có các ví dụ về cách xử lý dữ liệu được tìm nạp.

Bạn có thể nhận được tất cả các giá trị trong một mảng using a for loop:

$.getJSON("url_with_json_here", function(data){ 
    for (var i = 0, len = data.length; i < len; i++) { 
     console.log(data[i]); 
    } 
}); 

Kiểm tra giao diện điều khiển của bạn để xem kết quả (Chrome, Firefox/Firebug, IE).

jQuery cũng cung cấp $.each() cho lần lặp lại, vì vậy bạn cũng có thể làm điều này:

$.getJSON("url_with_json_here", function(data){ 
    $.each(data, function (index, value) { 
     console.log(value); 
    }); 
}); 
+0

cảm ơn, vui lòng xem chỉnh sửa của tôi –

+0

Đảm bảo rằng JSON đang đến :). Hãy thử 'console.log (dữ liệu);'. Ví dụ bạn đã chỉnh sửa trong câu hỏi của bạn sẽ hoạt động. – kapa

+0

@ user1083813 Tạo [mô phỏng nhỏ] (http://jsfiddle.net/wTCAM/1/) cho bạn chứng minh mã của bạn hoạt động. – kapa

29

Sử dụng parseJSON method:

var json = '["City1","City2","City3"]'; 
var arr = $.parseJSON(json); 

Sau đó, bạn có một mảng với những cái tên thành phố.

+0

cảm ơn tuyệt vời, vì vậy nếu tôi đang sử dụng ở trên với $ .getJSON phương pháp, sẽ mã này đi trong chức năng chạy sau khi thành công nhận được JSON từ một URL? –

+1

@ user1083813: Nếu bạn đang tìm nạp JSON bằng AJAX, thì bạn nên xác định rằng kiểu dữ liệu là JSON. Sau đó, nó sẽ được phân tích cú pháp tự động, và gọi lại thành công sẽ nhận được một đối tượng hoặc mảng thay vì một chuỗi. Nếu bạn đang sử dụng phương thức 'getJSON', kiểu dữ liệu được đặt thành JSON tự động, do đó bạn không phải phân tích cú pháp kết quả. – Guffa

+0

Đây là những gì tôi cần. Tôi đã có chuỗi JSON trong phiên và không cần tìm nạp AJAX. Cám ơn. – zkent

0
var dataArray = []; 
var obj = jQuery.parseJSON(response); 
    for(key in obj) 
    dataArray.push([key.toString(), obj [key]]); 
}; 
+2

-1 để sử dụng 'for..in' trên một mảng. – kapa

7
var dataArray = []; 
var obj = jQuery.parseJSON(yourInput); 

$.each(obj, function (index, value) { 
    dataArray.push([value["yourID"].toString(), value["yourValue"] ]); 
}); 

này giúp tôi rất nhiều :-)

0

với parse.JSON

var obj = jQuery.parseJSON('{ "name": "John" }'); 
alert(obj.name === "John"); 
+6

-1 Câu trả lời tương tự đã được đăng hơn một năm trước. – kapa