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.parsees lo contrario deJSON.stringify.fuente
JSON.stringifyyJSON.parseson 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
ownPropertiesel 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
toJSONfunció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.parseyJSON.stringify. Por ejemplo:fuente
JSON SPEC{ bar:"bar" }(desde su prototipo) no se considera json válido ya quefooes una variable en lugar de una cadena. Json válido necesitakeyque 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.parseHay 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