2010-07-24 38 views
6

Tôi có một mảng đầu ra json như thế nàyCách in dữ liệu json.

{ 
    "data": [ 
     { 
     "name": "Ben Thorpe", 
     "id": "XXXXXXXXXXX" 
     }, 
     { 
     "name": "Francis David", 
     "id": "XXXXXXXXXXX" 
     }, 
} 

Tôi muốn để lặp qua nó và in ra tất cả các tên sử dụng javascript. Tôi muốn có thể làm điều này.

for(i=0;i<length;i++){ 
     var result += response.data[i].name + ', '; 
} 

Nhưng tôi không thể tìm thấy độ dài của đối tượng json bằng javascript.

Trả lời

5

response.data là một array đối tượng, do đó có thuộc tính length mà bạn có thể sử dụng để lặp lại các phần tử của nó.

var result; 

for(var i=0;i<response.data.length;i++) 
{ 
     result += response.data[i].name + ', '; 

} 
+2

cần giải thích điều này tốt hơn nhiều. –

2

Nếu bạn chỉ muốn nhìn vào nó cho mục đích gỡ lỗi, làm một console.log(myObject) hoặc console.dir(myObject) và hãy nhìn vào những con đom đóm/chrome/safari console.

Đối tượng không tự động có thuộc tính length vì nó không phải là mảng. Để lặp qua các thuộc tính của đối tượng, hãy thực hiện như sau:

for (var p in location) { 
    console.log(p + " : " + location[p]); 
} 

Trong một số trường hợp, bạn có thể muốn lặp lại các thuộc tính của đối tượng chứ không phải thuộc tính của nguyên mẫu của đối tượng. Nếu bạn nhận được những thứ không mong muốn với các vòng lặp for..in thường xuyên, sử dụng Object.prototype 's hasOwnProperty:

for (var p in location) if (location.hasOwnProperty(p)) { 
    console.log(p + " : " + location[p]); 
} 

Vấn đề là, nếu đây là/đã thực sự JSON dữ liệu, nó cần phải có được một chuỗi tại một số điểm, như JSON là định nghĩa một chuỗi đại diện của một đối tượng. Vì vậy, câu hỏi của bạn "Làm thế nào để in dữ liệu json" gần như đọc như "Làm thế nào để in một chuỗi." Nếu bạn muốn in nó ra, bạn sẽ có thể bắt nó trước khi nó được cho bất cứ điều gì phân tích nó vào đối tượng đó và chỉ cần in nó ra.

+0

Xin lỗi, response.data chắc chắn là một mảng và do đó có một thuộc tính chiều dài. Mặc dù câu trả lời của bạn là chính xác cho một bản đồ bằng chữ hoặc 'mảng kết hợp' không liên quan đến câu hỏi này. –

+0

Hmm, anh ta đang cố gắng lặp qua một mảng phải không? Khung đóng bị thiếu và đối tượng bên ngoài đã ném tôi đi, tôi nghĩ anh ta đang cố gắng lặp qua một đối tượng được tạo từ JSON.parse() hoặc tương tự. Trên thực tế, for..in sẽ làm việc tốt ngay cả khi đối tượng là một mảng ... nên làm việc cũng như sử dụng '.length' miễn là Array.prototype không bị rối tung. –

+0

sai lầm trung thực. và chắc chắn, cho-in có thể/có thể làm việc, nhưng tôi có xu hướng ưu tiên mã mà chỉ hoạt động. ;-) –

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