2012-05-25 11 views
9

Sospecho que este es un problema fácil, pero soy un poco nuevo en js y no puedo encontrar la solución.La cadena JSON se trata como una cadena literal en el ciclo

Básicamente, cuando paso una cadena JSON a una función y luego intento iterar a través de la variable pasada, la trata como una cadena literal en lugar de una matriz.

Con esta función:

function build_codes_long(codes) { 
    var codes_long_text = ""; 
    for(var i =0;i < codes.length-1;i++) { 
     var code = codes[i]; 
     codes_long_text += "<p>" + code['id'] + " = " + code['del'] + "</p>"; 
    } 
return codes_long_text; 
} 

Cuando paso una cadena JSON a ella como:

[{"id":"1","del":"0","clip":"1"},{"id":"2","del":"0","clip":"1"}] 

Se evalúa cada carácter de la cadena, en lugar de cada elemento de la matriz. Por lo tanto, se repite 65 veces en lugar de 2 y se devuelve algo como:

undefined = undefined 

Entiendo el problema con los valores devueltos; es el tratamiento de la matriz como una cadena literal que no entiendo. ¡Gracias!

Respuesta

11

Esto se debe a que no está pasando por un objeto; estás recorriendo una cuerda y obteniendo cada letra como resultado.

es necesario convertir la cadena JSON a un objeto en primer lugar:

var myObject = JSON.parse(myJsonString); 
var codesLongText = build_codes_long(myObject); 
+0

que lo hizo. ¡Gracias! –

Cuestiones relacionadas