Объект JSON

JSON (JavaScript Object Notation) – это формат передачи данных.

Встроенный объект JSON, предоставляющий функции для преобразования значений JavaScript в формат JSON и обратно. Функция JSON.stringify сериализует значение JavaScript в текст JSON. Функция JSON.parse десериализует текст JSON для получения значения JavaScript.

Синтаксис

JSON.method

Параметры

Method
Обязательный. Имя одного из методов объекта JSON.

Комментарии

Невозможно создать объект JSON с помощью оператора new. При попытке это сделать возникает ошибка. Тем не менее можно переопределить или изменить объект JSON.

Обработчик скриптов создает объект JSON при загрузке обработчика. Скрипту всегда доступны его методы.

stringify

Метод stringify() преобразует значение JavaScript в строку JSON.

Особенности преобразования:

Синтаксис

JSON.stringify(value[, replacer[, space]])

Параметры

value

Значение, которое будет преобразовано в строку JSON.
replacer

Необязательный. Значением параметра может быть функция, массив или null.
  • Массив определяет набор свойств объекта, которые будут включены в JSON-строку. В качестве значений массива указываются строки, соответствующие именам свойств преобразуемого объекта.
  • Функция позволяет заменить значения свойств объекта в JSON-строке. Функция должна содержать два параметра: имя свойства и значение свойства. Имя свойства является строкой. Функция должна возвращать новое значение свойства.
  • Если значением параметра является null, то JSON-строка будет включать все свойства объекта.
space

Необязательный. Делает JSON-строку более удобочитаемой, добавляя отступы для каждого уровня вложенности. Значением параметра может быть строка или число.
  • Число указывает количество пробелов, используемых в качестве отступа для каждого уровня вложенности. Каждый последующий уровень вложенности дополняется новыми отступами. Например, если в качестве значения параметра используется число 2, то на первом уровне вложенности отступ будет составлять два пробела, на последующем уровне вложенности отступ будет составлять 4 пробела и т. д. Максимальное количество пробелов, которое можно указать – 10. Если указать большее число, оно автоматически уменьшится до 10.
  • Строка определяет символ, используемый в качестве отступа для каждого уровня вложенности. Длина строки ограничена 10 символами, если указать строку длиннее, она обрезается до 10 символов. Использование строки также позволяет использовать табуляцию ("\t") в качестве отступа. Каждый последующий уровень вложенности дополняется новыми символами отступа. Например, если в качестве значения параметра указан символ - (дефис), то на первом уровне вложенности в качестве отступа будет использоваться один дефис, на последующем уровне вложенности будет использоваться 2 дефиса и т. д.

Возвращаемое значение

JSON-строка.

Пример

var person = {
  name: "Гомэр",
  age: 40,
  work: {
    place: "Атомная станция",
    location: "Спрингфилд"
  }
}

alert ( 
"Пример с одним параметром:\n" + 
  JSON.stringify(person) + // '{"name":"Гомэр","age":40,"work":{"place":"Атомная станция","location":"Спрингфилд"}}'
 
"\n\nПример с двумя параметрами (массив):\n" + 
  JSON.stringify(person, ["name", "age"]) +   // '{"name":"Гомэр","age":40}'
 
"\n\nПример с двумя параметрами (функция):\n" + 
  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}'
 
"\n\nПример с тремя параметрами:\n" + 
JSON.stringify(person, null, 2));   /* {
                                          *    "name": "Гомэр",
                                          *    "age": 40,
                                          *    "work": {
                                          *      "place": "Атомная станция",
                                          *      "location": "Спрингфилд"
                                          *    }
                                          *  } 
                                    */

parse

Метод parse() преобразует строку JSON в соответствующее значение JavaScript.

Особенности преобразования:

Синтаксис

JSON.parse(text[, reviver])

Параметры

text

JSON-строка, которая будет преобразована в соответствующее значение JavaScript.
reviver

Необязательный. Значением параметра должна быть функция. Функция позволяет заменить значение свойства JSON-строки перед его возвратом. Функция должна содержать два параметра: имя свойства и значение свойства. Имя свойства является строкой. Функция должна возвращать новое значение свойства.

Возвращаемое значение

Соответствующее значение JavaScript (примитивное значение, объект или массив).

Пример

alert (
JSON.parse('{}') + '\n' +            // {}
JSON.parse('true') + '\n' +          // true
JSON.parse('[1, 5, "false"]')+'\n'+  // [1, 5, "false"]
JSON.parse('null') );                // null