2010-12-07 18 views
46

me gustaría convertir esta cadenaConvertir JSON cadena en serie de objetos JSON en JavaScript

{"id":1,"name":"Test1"},{"id":2,"name":"Test2"} 

a 2 gama de objetos JSON. ¿Cómo debería hacerlo?

mejor

+2

Si obtiene esto como una cadena JSON, entonces no es válido JSON de todos modos ... ¿de dónde lo sacas? ¿Podría publicar un ejemplo de código más completo? –

Respuesta

83

Usando jQuery:

var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}'; 
var jsonObj = $.parseJSON('[' + str + ']'); 

jsonObj es su objeto JSON.

+0

Gracias mucho por respuestas – Sobis

+0

@Sobis Se podría haber aceptado una respuesta ... –

5

Anexar un extra de [ y ] al principio y al final de la cadena. Esto lo convertirá en una matriz. Luego use eval() o algún serializador JSON seguro para serializar la cadena y convertirla en un tipo de datos de JavaScript real.

Debe utilizar https://github.com/douglascrockford/JSON-js en lugar de eval(). eval es solo si estás haciendo algunas depuraciones/pruebas rápidas.

4

Si utiliza jQuery, es parseJSON función se puede utilizar y es preferible a la función nativa de JavaScript eval().

22

Como se indica Luca, añadir el suplemento [] a la cadena y utilizar el código de abajo:

var myObject = eval('(' + myJSONtext + ')'); 

para probar que se puede utilizar el siguiente fragmento de código.

var s =" [{'id':1,'name':'Test1'},{'id':2,'name':'Test2'}]"; 
var myObject = eval('(' + s + ')'); 
for (i in myObject) 
{ 
    alert(myObject[i]["name"]); 
} 

creo que sirve ..

+0

que trabaja muy bien con esta solución – Anup

1

Sé que mucha gente está diciendo el uso de eval. la función eval() js llamará al compilador, y eso puede ofrecer una serie de riesgos de seguridad. Lo mejor es evitar su uso siempre que sea posible. La función de análisis ofrece una alternativa más segura.

13

Tan simple como eso.

var str = '{"id":1,"name":"Test1"},{"id":2,"name":"Test2"}'; 
dataObj = JSON.parse(str); 
+1

Como el comentario sobre los estados pregunta original, la cadena como se da no es válida JSON. –

Cuestiones relacionadas