2009-05-07 9 views

Respuesta

2

Quoth Crockford (http://www.json.org/js.html):

Para convertir un texto JSON en un objeto, puede utilizar la función eval(). eval() invoca el compilador 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 tropezando con una ambigüedad en la sintaxis de JavaScript de .

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

La función eval es muy rápida. Sin embargo, puede compilar y ejecutar cualquier programa de JavaScript, por lo que puede ser problemas de seguridad. El uso de eval es indicado cuando la fuente es confiable y competente. Es mucho más seguro usar un analizador JSON. ...

Para defenderse de esto, se debe utilizar un analizador JSON . Un analizador JSON reconoce solo texto JSON, rechazando todos los scripts. En navegadores que proporcionan compatibilidad nativa con JSON , los analizadores JSON son también mucho más rápidos que eval. Es esperado que la compatibilidad nativa con JSON será incluida en la próxima norma ECMAScript .

var myObject = JSON.parse (myJSONtext, reviver);

Y luego desarrolla el prototipo JSON en el resto del artículo.

Las versiones de Gecko utilizadas en Firefox 3 y 3.5 son compatibles con JSON de forma nativa (https://developer.mozilla.org/En/JSON), lo que puede ser útil si su proyecto está limitado a una aplicación reciente basada en Gecko.


Como se señala más adelante, la parte interesante sobre el generador de texto (no parser) es al https://github.com/douglascrockford/JSON-js/blob/master/json2.js e introducido con

A JSON stringifier va en la dirección opuesta, la conversión de las estructuras de datos de JavaScript en JSON texto. JSON no admite estructuras de datos cíclicos, por lo que debe tener cuidado de no dar estructuras cíclicas al secuenciador JSON.

var myJSONText = JSON.stringify (myObject, replacer);

Las estructuras de datos cíclicos y los objetos que no son serializados con utilidad son obviamente las únicas grandes advertencias allí.

0

Vale la pena mencionar que el enlace de Anonymous (http://www.json.org/js.html) te orientará en la dirección correcta porque la página también incluye información sobre cómo stringify una estructura de datos JavaScript en JSON texto:

Un JSON stringifier va en la dirección opuesta, convirtiendo estructuras de datos JavaScript en texto JSON.

En particular, busque el enlace en la parte inferior de la página que apunta a un analizador JSON de fuente abierta y un secuenciador JSON.

12

Hay dos métodos de ejemplo en la biblioteca de Crockford (como criado por @Anonymous):

cadena

JSON a objeto:

var obj = JSON.parse('{ "property":"value" }'); 
alert (obj.property); 

// value 

de objetos para cadena JSON:

var str = JSON.stringify({ "property":"value" }) 
alert (str); 

//{ "property":"value" } 

Hay También se han incorporado métodos para hacer esto en la mayoría de los principales marcos.

+0

Biblioteca en http://www.json.org/json.js – Keith

+2

@Jason T Featheringham Waow 'Mr.Json' estuvo presente aquí editando la pregunta :) –

Cuestiones relacionadas