2010-07-24 25 views
6

que tienen una matriz de salida JSON como estoCómo imprimir datos json.

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

Quiero bucle a través de ella e imprimir los nombres de todas las usando javascript. Quiero ser capaz de hacer esto.

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

Pero no puedo encontrar la longitud del objeto json utilizando javascript.

Respuesta

5

response.data es un array de objetos, así tiene una propiedad length que puede usar para iterar sus elementos.

var result; 

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

} 
+2

necesitan explicar esto mucho mejor. –

2

Si lo que desea es mirarlo con fines de depuración, realice una o console.log(myObject)console.dir(myObject) y echar un vistazo a la consola de Firebug/cromo/safari.

El objeto no tiene automáticamente una propiedad length porque no es una matriz. Para repetir las propiedades de un objeto, hacer algo como esto:

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

En algunos casos es posible que desee iterar sobre las propiedades del objeto, pero no propiedades de prototipo del objeto. Si usted está recibiendo material no deseado con el bucle for..in regular, utilizar Object.prototype 's hasOwnProperty:

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

La cosa es, si esto es/fue realmente los datos JSON, que debería haber sido una cadena en algún punto, ya que JSON es, por definición, una representación de cadena de un objeto. Así que su pregunta "Cómo imprimir datos json" casi se puede leer como "Cómo imprimir una cadena". Si quieres imprimirlo, deberías poder atraparlo antes de que llegue a lo que se haya analizado en ese objeto y solo imprimirlo.

+0

Lo sentimos, response.data es ciertamente una matriz y, por lo tanto, tiene una propiedad de longitud. Si bien su respuesta es precisa para un mapa literal o una "matriz asociativa", no es relevante para esta pregunta. –

+0

Hmm, él está tratando de iterar sobre una matriz ¿no? El corchete de cierre faltante y el literal de objeto externo me desanimaron, pensé que estaba tratando de iterar sobre un Objeto creado a partir de JSON.parse() o similar. En realidad, for..in funcionará bien incluso si el objeto es una matriz ... debería funcionar igual de bien que usar '.length' siempre que no se haya interferido con Array.prototype. –

+0

error honesto. y seguro, for-in puede/puede funcionar, pero tiendo a favorecer el código que simplemente funciona. ;-) –