JSON — Javascript Object Notation. В большинстве случаев JSON объекты можно разбирать через eval. Но так делать не рекомендуется из-за того, что eval выполнит любой Javascript код. В Javascript есть специальные методы для разбора JSON. Нужно использовать их.
JSON.parse(text[, reviver])
Возвращает объект, соответствующий переданной строке text. Необязательный параметр reviver — функция преобразования значений. Она имеет два параметра. Первый — имя свойства. Второй — значение. Функция reviver возвращает преобразованное значение.
1 2 |
var obj1 = JSON.parse('{"x":4}'); alert(obj1.x); // 4 |
JSON.stringify(value[, replacer[, space]])
Преобразует объект Javascript в строку с JSON.
value — преобразуемый объект.
replacer — функция преобразования значений. Если массив, то определяет свойства, включаемые в объект в окончательной строке. Функция имеет два параметра: имя свойства, значение. Возвращает преобразованное значение либо undefined, если свойство нужно пропустить.
space — число пробелов для отступов. Либо строка, которая будет предварять каждый следующий отступ.
Также объект в Javascript может иметь свой метод toJSON. Тогда будет использоваться возвращаемое им значение в качестве результата вызова этой функции.
1 |
alert(JSON.stringify({x:4, name : "Вася", d : new Date()}, null, 4)); |
В примере выше при преобразовании в JSON поля с датой получается строка вида «2015-07-08T12:59:35.678Z». А при обратном преобразовании из JSON строки эта строка так и останется строкой. Информация о том, что она была датой, нигде не сохраняется. Если мы хотим получить в итоге именно дату, то её нужно обрабатывать отдельно.