Estoy encadenando un objeto como {'foo': 'bar'}
¿Cómo puedo volver la cadena a un objeto?
javascript
json
object
thelolcat
fuente
fuente
{foo: 'bar'}
no es válido JSON (si bien es una expresión de javascript válida).Respuestas:
Necesitas
JSON.parse()
la cuerda.fuente
JSON.parse
es lo contrario deJSON.stringify
.fuente
JSON.stringify
yJSON.parse
son casi opuestos, y "generalmente" este tipo de cosas funcionarán:para que obj y obj2 sean "lo mismo".
Sin embargo, hay algunas limitaciones a tener en cuenta. A menudo, estos problemas no importan, ya que se trata de objetos simples. Pero ilustraré algunos de ellos aquí, usando esta función auxiliar:
Solo obtendrás
ownProperties
el objeto y perderás prototipos:Perderás identidad:
Las funciones no sobreviven:
Los objetos de fecha terminan como cadenas:
Los valores indefinidos no sobreviven:
Los objetos que proporcionan una
toJSON
función pueden no comportarse correctamente.Estoy seguro de que también hay problemas con otros tipos integrados. (Todo esto se probó usando node.js, por lo que también puede obtener un comportamiento ligeramente diferente dependiendo de su entorno).
Cuando importa, a veces puede superarse utilizando los parámetros adicionales de
JSON.parse
yJSON.stringify
. Por ejemplo:fuente
JSON SPEC
{ bar:"bar" }
(desde su prototipo) no se considera json válido ya quefoo
es una variable en lugar de una cadena. Json válido necesitakey
que sea astring
.JSON.parse
. Solo estoy advirtiendo que hay muchos casos que no se manejarán correctamente. Si está utilizando datos primitivos puros (sin clases, prototipos) y solo los tipos de datos admitidos por JSON (sin fechas, XML, HTML, etc.), entonces está bien.X = { foo:"bar" }
es lo mismoX = { "foo":"bar" }
que loX = {}; X.foo = "bar"
que es lo mismo queX={}; X["foo"] = "bar"
El objeto resultante es idéntico en los 4 casos. Eso no hace ninguna diferencia en la validez del JSON generado.http://jsbin.com/tidob/1/edit?js,console,output
El objeto JSON nativo incluye dos métodos clave.
El
JSON.parse()
método analiza una cadena JSON, es decir, reconstruye el objeto JavaScript originalvar jsObject = JSON.parse(jsonString);
El método JSON.stringify () acepta un objeto JavaScript y devuelve su equivalente JSON.
var jsonString = JSON.stringify(jsObject);
fuente
Se recomienda usar
JSON.parse
Hay una alternativa que puedes hacer:
Json en JavaScript
¿Por qué usar la función de evaluación de JavaScript es una mala idea?
fuente
Qué tal esto
Esta es una alternativa más segura para
eval
.Mostrar fragmento de código
fuente
Mira esto.
http://jsfiddle.net/LD55x/
Código:
fuente
fuente