Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. JSON

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

JSON

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

* Some parts of this feature may have varying levels of support.

Сводка

ОбъектJSON содержит методы для разбораобъектной нотации JavaScript (JavaScript Object Notation — сокращённоJSON) и преобразования значений в JSON. Его нельзя вызвать как функцию или сконструировать как объект, и кроме своих двух методов он не содержит никакой интересной функциональности.

Описание

Объектная нотация JavaScript

JSON является синтаксисом для сериализации объектов, массивов, чисел, строк логических значений и значенияnull. Он основывается на синтаксисе JavaScript, однако всё же отличается от него: не каждый код на JavaScript является JSON, и не каждый JSON является кодом на JavaScript. Смотрите также статьюJSON: подмножество JavaScript, которым он не является (на английском).

Различия между JavaScript и JSON
Тип JavaScriptОтличия от JSON
Объекты и массивы Имена свойств должны быть строками, заключёнными в двойные кавычки; конечные запятые запрещены.
Числа Ведущие нули запрещены; перед десятичной запятой обязательно должна быть хотя бы одна цифра.
Строки

Только ограниченный набор символов может быть заэкранирован; некоторые управляющие символы запрещены; разрешены юникодные символы разделительной линии (U+2028) и разделительного параграфа (U+2029); строки должны быть заключены в двойные кавычки. Смотрите следующий пример, в котором методJSON.parse() отрабатывает без проблем, а при вычислении кода как JavaScript выбрасывается исключениеSyntaxError:

js
var code = '"\u2028\u2029"';JSON.parse(code); // работаетeval(code); // ошибка

Ниже представлен полный синтаксис JSON:

JSON = null    or true or false    or JSONNumber    or JSONString    or JSONObject    or JSONArrayJSONNumber = - PositiveNumber          or PositiveNumberPositiveNumber = DecimalNumber              or DecimalNumber . Digits              or DecimalNumber . Digits ExponentPart              or DecimalNumber ExponentPartDecimalNumber = 0             or OneToNine DigitsExponentPart = e Exponent            or E ExponentExponent = Digits        or + Digits        or - DigitsDigits = Digit      or Digits DigitDigit = 0 through 9OneToNine = 1 through 9JSONString = ""          or " StringCharacters "StringCharacters = StringCharacter                or StringCharacters StringCharacterStringCharacter = any character                  except " or \ or U+0000 through U+001F               or EscapeSequenceEscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t              or \u HexDigit HexDigit HexDigit HexDigitHexDigit = 0 through 9        or A through F        or a through fJSONObject = { }          or { Members }Members = JSONString : JSON       or Members , JSONString : JSONJSONArray = [ ]         or [ ArrayElements ]ArrayElements = JSON             or ArrayElements , JSON

Во всех продукциях могут присутствовать незначащие пробельные символы, за исключением продукцийЧислоJSON (числа не должны содержать пробелов) иСтрокаJSON (где они интерпретируются как часть строки или возбуждают ошибку). Пробельными символами считаются символы табуляции (U+0009), возврата каретки (U+000D), перевода строки (U+000A) и, собственно, пробела (U+0020).

Методы

JSON.parse()

Разбирает строку JSON, возможно с преобразованием получаемого значения и его свойств и возвращает разобранное значение.

JSON.stringify()

Возвращает строку JSON, соответствующую указанному значению, возможно с включением только определённых свойств или с заменой значений свойств определяемым пользователем способом.

Полифил

ОбъектJSON не поддерживается старыми браузерами. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать объектJSON в реализациях, которые его ещё не поддерживают (например, в Internet Explorer 6).

Следующий алгоритм имитирует работу настоящего объектаJSON:

js
if (!window.JSON) {  window.JSON = {    parse: function (sJSON) {      return eval("(" + sJSON + ")");    },    stringify: function (vContent) {      if (vContent instanceof Object) {        var sOutput = "";        if (vContent.constructor === Array) {          for (            var nId = 0;            nId < vContent.length;            sOutput += this.stringify(vContent[nId]) + ",", nId++          );          return "[" + sOutput.substr(0, sOutput.length - 1) + "]";        }        if (vContent.toString !== Object.prototype.toString) {          return '"' + vContent.toString().replace(/"/g, "\\$&") + '"';        }        for (var sProp in vContent) {          sOutput +=            '"' +            sProp.replace(/"/g, "\\$&") +            '":' +            this.stringify(vContent[sProp]) +            ",";        }        return "{" + sOutput.substr(0, sOutput.length - 1) + "}";      }      return typeof vContent === "string"        ? '"' + vContent.replace(/"/g, "\\$&") + '"'        : String(vContent);    },  };}

Более сложными известнымиполифилами для объектаJSON являются проектыJSON2 иJSON3.

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-json-object

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp