Estou pressionando um objeto como {'foo': 'bar'}
Como posso transformar a string de volta em um objeto?
javascript
json
object
thelolcat
fonte
fonte
{foo: 'bar'}
JSON não é válido (embora seja uma expressão javascript válida).Respostas:
Você precisa
JSON.parse()
da string.fonte
JSON.parse
é o oposto deJSON.stringify
.fonte
JSON.stringify
eJSON.parse
são quase opostos, e "geralmente" esse tipo de coisa funcionará:para que obj e obj2 sejam "iguais".
No entanto, existem algumas limitações a serem observadas. Geralmente, esses problemas não importam, pois você lida com objetos simples. Mas ilustrarei alguns deles aqui, usando esta função auxiliar:
Você só conseguirá
ownProperties
o objeto e perderá protótipos:Você perderá a identidade:
As funções não sobrevivem:
Os objetos de data terminam como seqüências de caracteres:
Valores indefinidos não sobrevivem:
Objetos que fornecem uma
toJSON
função podem não se comportar corretamente.Tenho certeza de que também há problemas com outros tipos internos. (Tudo isso foi testado usando o node.js, para que você possa ter um comportamento um pouco diferente dependendo do seu ambiente também).
Quando isso importa, às vezes pode ser superado usando os parâmetros adicionais de
JSON.parse
eJSON.stringify
. Por exemplo:fonte
JSON SPEC
{ bar:"bar" }
(do seu protótipo) não é considerado json válido, poisfoo
é uma variável e não uma string. O json válido precisakey
ser astring
.JSON.parse
. Só estou avisando que existem muitos casos que não serão tratados corretamente. Se você estiver usando dados primitivos puros (sem classes, protótipos) e apenas os tipos de dados suportados pelo JSON (sem datas, XML, HTML etc.), estará bem.X = { foo:"bar" }
é o mesmoX = { "foo":"bar" }
que é o mesmoX = {}; X.foo = "bar"
queX={}; X["foo"] = "bar"
O objeto resultante é idêntico em todos os 4 casos. Isso não faz diferença para a validade do JSON gerado.http://jsbin.com/tidob/1/edit?js,console,output
O objeto JSON nativo inclui dois métodos principais.
O
JSON.parse()
método analisa uma string JSON - isto é, reconstruindo o objeto JavaScript originalvar jsObject = JSON.parse(jsonString);
O método JSON.stringify () aceita um objeto JavaScript e retorna seu equivalente em JSON.
var jsonString = JSON.stringify(jsObject);
fonte
Recomendado é usar
JSON.parse
Existe uma alternativa que você pode fazer:
Json em javascript
Por que usar a função eval JavaScript é uma má idéia?
fonte
Que tal agora
Esta é uma alternativa mais segura para
eval
.Mostrar snippet de código
fonte
Veja isso.
http://jsfiddle.net/LD55x/
Código:
fonte
fonte