2011-07-19 19 views

Respuesta

9

Uso JSON JS

+3

Esta no es una biblioteca nativa en los navegadores más antiguos. Tendrá que incluir [la biblioteca] (https://github.com/douglascrockford/JSON-js) explícitamente para atenderlos. – Spycho

+0

Gracias por señalar a Spycho. –

6

Para convertir un texto JSON en un objeto, puede utilizar la función eval(). eval() invoca el compilador de JavaScript. Como JSON es un subconjunto propio de JavaScript, el compilador analizará correctamente el texto y producirá una estructura de objeto. El texto debe estar envuelto en parens para evitar tropezar con una ambigüedad en la sintaxis de JavaScript.

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

Esto puede ser peligroso ya que ejecutará JS arbitrario. Si su JSON se genera a partir de contenido enviado por el usuario, puede abrirse a ataques XSS. – Spycho

+0

Sí, por supuesto, no debe hacer algo como esto sin las verificaciones adecuadas ... –

+2

OP pedido más rápido, hasta donde sabemos, el OP controla el contenido detrás de la etiqueta del script. Buen comentario sin embargo. –

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

La función eval es muy rápida. Sin embargo, puede compilar y ejecutar cualquier programa de JavaScript, por lo que puede haber problemas de seguridad. El uso de eval se indica cuando la fuente es confiable y competente. Es mucho más seguro usar un analizador JSON. En las aplicaciones web sobre XMLHttpRequest, la comunicación solo se permite en el mismo origen que proporciona esa página, por lo que es de confianza. Pero podría no ser competente. Si el servidor no es riguroso en su codificación JSON, o si no valida escrupulosamente todas sus entradas, entonces podría entregar un texto JSON no válido que podría llevar una secuencia de comandos peligrosa ... – jinglesthula

1

Si la cadena JSON viene desde el servidor se puede probar la técnica JSONP. El JSON se analiza de forma nativa en el navegador (rápido) cuando se carga y sin ninguna biblioteca.

por ejemplo: si respuesta es {"name":"Peter"} respuesta

Un JSONP será algo como: yourFunction({"name":"Peter"})

yourFunction debe ser una función definida a nivel mundial en la página que va a recibir la llamada, como:

function yourFunction(json){ 
    //do something with the JSON 
} 
Cuestiones relacionadas