2010-07-24 88 views
6

我有這樣如何打印json數據。

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

一個JSON輸出數組我想通過它循環,使用JavaScript打印出所有的名字。我希望能夠做到這一點。

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

但我無法找到使用JavaScript的json對象的長度。

回答

5

response.data是對象的array,因此有一個length屬性,您可以使用它來迭代其元素。

var result; 

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

} 
+2

需要解釋得更好。 – 2015-06-29 13:41:45

2

如果你只是想看看它用於調試目的,做了console.log(myObject)console.dir(myObject)並看看螢火蟲/鉻/ Safari瀏覽器的控制檯。

該對象不會自動具有length屬性,因爲它不是數組。要遍歷一個對象的屬性,做這樣的事情:

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

在您可能需要遍歷對象的屬性某些情況下,而不是對象的原型的屬性。如果您收到不想要的東西與普通for..in循環,使用Object.prototypehasOwnProperty

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

的事情是,如果這是/是真的JSON數據,它應該有一些是一個字符串因爲JSON的定義是一個對象的字符串表示。所以你的問題「如何打印JSON數據」幾乎讀起來像「如何打印字符串」。如果你想將它打印出來,你應該能夠在它解析到該對象之前捕獲它並將其打印出來。

+0

對不起,response.data肯定是一個數組,因此具有length屬性。雖然你的答案對於字面圖或「關聯數組」是準確的,但與此問題無關。 – 2010-07-24 21:02:50

+0

嗯,他試圖遍歷一個數組不是嗎?缺少的左括號和外部對象文字讓我失望,我以爲他試圖迭代從JSON.parse()或類似的對象創建的對象。實際上,即使對象是一個數組,也可以正常工作......只要Array.prototype沒有與之混淆,就應該使用'.length'。 – 2010-07-24 21:08:05

+0

誠實的錯誤。當然,for-in can /可以工作,但我傾向於贊成剛剛起作用的代碼。 ;-) – 2010-07-25 08:54:17