Объект JSON
Для работы с форматом JSON в JavaScript есть глобальный объект JSON. У объекта JSON есть два метода: stringify()
и parse()
. Кроме этих двух методов он не содержит больше никакой дополнительной функциональности.
Метод stringify()
Метод stringify() преобразует значение JavaScript в строку JSON.
Особенности преобразования:
- Значение
undefined
, функция или значение типаsymbol
, встреченные во время преобразования, будут либо опущены (если они найдены в объекте), либо превращены вnull
(если они найдены в массиве). - Члены прототипа и неперечислимые свойства игнорируются.
Синтаксис
JSON.stringify(value[, replacer[, space]])
Параметры
- value
- Значение, которое будет преобразовано в строку JSON.
- replacer (необязательный)
- Значением параметра может быть функция, массив или
null
.- Массив определяет набор свойств объекта, которые будут включены в JSON-строку. В качестве значений массива указываются строки, соответствующие именам свойств преобразуемого объекта.
- Функция позволяет заменить значения свойств объекта в JSON-строке. Функция должна содержать два параметра: имя свойства и значение свойства. Имя свойства является строкой. Функция должна возвращать новое значение свойства.
- Если значением параметра является
null
, то JSON-строка будет включать все свойства объекта.
- space (необязательный)
- Делает JSON-строку более удобочитаемой, добавляя отступы для каждого уровня вложенности. Значением параметра может быть строка или число.
- Число указывает количество пробелов, используемых в качестве отступа для каждого уровня вложенности. Каждый последующий уровень вложенности дополняется новыми отступами. Например, если в качестве значения параметра используется число 2, то на первом уровне вложенности отступ будет составлять два пробела, на последующем уровне вложенности отступ будет составлять 4 пробела и т. д. Максимальное количество пробелов, которое можно указать – 10. Если указать большее число, оно автоматически уменьшится до 10.
- Строка определяет символ, используемый в качестве отступа для каждого уровня вложенности. Длина строки ограничена 10 символами, если указать строку длиннее, она обрезается до 10 символов. Использование строки также позволяет использовать табуляцию ("\t") в качестве отступа. Каждый последующий уровень вложенности дополняется новыми символами отступа. Например, если в качестве значения параметра указан символ
-
(дефис), то на первом уровне вложенности в качестве отступа будет использоваться один дефис, на последующем уровне вложенности будет использоваться 2 дефиса и т. д.
Возвращаемое значение
JSON-строка.
Пример
let person = { name: "Гомэр", age: 40, work: { place: "Атомная станция", location: "Спрингфилд" } } // Пример с одним параметром console.log(JSON.stringify(person)); // '{"name":"Гомэр","age":40,"work":{"place":"Атомная станция","location":"Спрингфилд"}}' // Пример с двумя параметрами (массив) console.log(JSON.stringify(person, ["name", "age"])); // '{"name":"Гомэр","age":40}' // Пример с двумя параметрами (функция) console.log(JSON.stringify(person, function (key, value) { switch (key) { case "name": return "Барт"; case "age": return 10; case "work": return undefined; default: return value; } })); // '{"name":"Барт","age":10}' // Пример с тремя параметрами console.log(JSON.stringify(person, null, 2)); /* { * "name": "Гомэр", * "age": 40, * "work": { * "place": "Атомная станция", * "location": "Спрингфилд" * } * } */
Метод parse()
Метод parse() преобразует строку JSON в соответствующее значение JavaScript.
Особенности преобразования:
- Если во время преобразования в строке JSON встретиться значение
undefined
, то оно будет опущено (не будет включено в результат).
Синтаксис
JSON.parse(text[, reviver])
Параметры
- text
- JSON-строка, которая будет преобразована в соответствующее значение JavaScript.
- reviver (необязательный)
- Значением параметра должна быть функция. Функция позволяет заменить значение свойства JSON-строки перед его возвратом. Функция должна содержать два параметра: имя свойства и значение свойства. Имя свойства является строкой. Функция должна возвращать новое значение свойства.
Возвращаемое значение
Соответствующее значение JavaScript (примитивное значение, объект или массив).
Пример
JSON.parse('{}'); // {} JSON.parse('true'); // true JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null