Я строчу объект как {'foo': 'bar'}
Как я могу превратить строку обратно в объект?
javascript
json
object
thelolcat
источник
источник
{foo: 'bar'}
это недопустимый JSON (хотя это допустимое выражение javascript).Ответы:
Вам нужно
JSON.parse()
на строку.источник
JSON.parse
является противоположностьюJSON.stringify
.источник
JSON.stringify
иJSON.parse
почти опозиты, и "обычно" это будет работать:так что obj и obj2 "одинаковы".
Однако есть некоторые ограничения, о которых следует знать. Часто эти проблемы не имеют значения, поскольку вы имеете дело с простыми объектами. Но я проиллюстрирую некоторые из них здесь, используя эту вспомогательную функцию:
Вы получите только
ownProperties
объект и потеряете прототипы:Вы потеряете личность:
Функции не выживают:
Объекты Date заканчиваются как строки:
Неопределенные значения не выживают:
Объекты, предоставляющие
toJSON
функцию, могут вести себя неправильно.Я уверен, что есть проблемы с другими встроенными типами тоже. (Все это было протестировано с использованием node.js, поэтому вы можете получить немного другое поведение в зависимости от вашей среды).
Когда это имеет значение, иногда это можно преодолеть, используя дополнительные параметры
JSON.parse
иJSON.stringify
. Например:источник
JSON SPEC
{ bar:"bar" }
(из вашего прототипа) не считается допустимым JSON, посколькуfoo
это переменная, а не строка. Действительный JSON долженkey
бытьstring
.JSON.parse
. Я просто предупреждаю, что есть много случаев, которые не будут обрабатываться правильно. Если вы используете чистые примитивные данные (без классов, прототипов) и только типы данных, поддерживаемые JSON (без дат, XML, HTML и т. Д.), То все в порядке.X = { foo:"bar" }
есть то же,X = { "foo":"bar" }
что и то же,X = {}; X.foo = "bar"
что и то же, что иX={}; X["foo"] = "bar"
получившийся объект идентичен во всех 4 случаях. Это не имеет значения для достоверности сгенерированного JSON.http://jsbin.com/tidob/1/edit?js,console,output
Нативный объект JSON включает два ключевых метода.
JSON.parse()
Метод анализирует строку JSON - т.е. восстановления исходного объекта JavaScriptvar jsObject = JSON.parse(jsonString);
Метод JSON.stringify () принимает объект JavaScript и возвращает его эквивалент JSON.
var jsonString = JSON.stringify(jsObject);
источник
Рекомендуется использовать
JSON.parse
Есть альтернатива, которую вы можете сделать:
JSON в JavaScript
Почему использование JavaScript-функции eval - плохая идея?
источник
Как насчет этого
Это более безопасная альтернатива для
eval
.Показать фрагмент кода
источник
Проверь это.
http://jsfiddle.net/LD55x/
Код:
источник
источник