--- title: JSON slug: Web/JavaScript/Reference/Global_Objects/JSON tags: - JSON - JavaScript - Довідка - Об'єкт translation_of: Web/JavaScript/Reference/Global_Objects/JSON ---
Об'єкт JSON містить методи для розбору JavaScript Object Notation ({{glossary("JSON")}}) і конвертації значень у JSON. Його можна або просто викликати, або конструювати; і окрім своїх двох методів він не має у собі іншої корисної функціональності.
JSON - це синтаксис для серіалізації об'єктів, масивів, чисел, строк, булевих значень, та {{jsxref("null")}}. Він заснований на синтаксисі JavaScript, проте дещо відрізняється від нього: деякий JavaScript не є JSON, і деякий JSON не є JavaScript. Докладніше у JSON: The JavaScript subset that isn't.
| Тип у JavaScript | Відмінність у JSON |
|---|---|
| Об'єкти та масиви | Назви полів повинні являти собою строки у подвійних лапках; прикінцеві коми заборонені. |
| Числа | Ведучі нулі також заборонені (При виконанні JSON.stringify нулі просто проігноруються, проте JSON.parse викине SyntaxError); після десяткової крапки повинна слідувати хоча б одна цифра. |
| Строки |
Лише обмежений набір символів можна екранувати; деякі керівні символи заборонені; такі символи юнікоду, як розділювач рядків (U+2028) та розділювач абзаців (U+2029) дозволені; строки повинні виділятись подвійними лапками. Зверніть увагу на наступні приклади, де {{jsxref("JSON.parse()")}} нормально працює, проте при обчисленні виразу як JavaScript-коду буде отримана помилка {{jsxref("SyntaxError")}}: var code = '"\u2028\u2029"'; JSON.parse(code); // працює eval(code); // помилка |
Повний синтаксис JSON виглядає так:
JSON = null
або true або false
або JSONNumber
або JSONString
або JSONObject
або JSONArray
JSONNumber = - PositiveNumber
чи PositiveNumber
PositiveNumber = DecimalNumber
або DecimalNumber . Digits
або DecimalNumber . Digits ExponentPart
або DecimalNumber ExponentPart
DecimalNumber = 0
або OneToNine Digits
ExponentPart = e Exponent
чи E Exponent
Exponent = Digits
або + Digits
або - Digits
Digits = Digit
чи Digits Digit
Digit = від 0 до 9
OneToNine = від 1 до 9
JSONString = ""
чи " StringCharacters "
StringCharacters = StringCharacter
чи StringCharacters StringCharacter
StringCharacter = будь-який символ
за виключенням " або \ або від U+0000 до U+001F
або EscapeSequence
EscapeSequence = \" або \/ або \\ або \b або \f або \n або \r або \t
або \u HexDigit HexDigit HexDigit HexDigit
HexDigit = від 0 до 9
або від A до F
або від a до f
JSONObject = { }
чи { Members }
Members = JSONString : JSON
чи Members , JSONString : JSON
JSONArray = [ ]
чи [ ArrayElements ]
ArrayElements = JSON
чи ArrayElements , JSON
Беззмістовні пробільні символи можуть бути будь-де за винятком JSONNumber (числа не повинні містити пробіли) або JSONString (де це сприймається за частину строки, або призведе до помилки). Символ табуляції (U+0009), повернення каретки (U+000D), початку рядка (U+000A) та пробіл (U+0020) - це всі дійсні пробільні символи.
| Специфікація | Статус | Примітка |
|---|---|---|
| {{SpecName('ES5.1', '#sec-15.12', 'JSON')}} | {{Spec2('ES5.1')}} | Первинне визначення. |
| {{SpecName('ES6', '#sec-json-object', 'JSON')}} | {{Spec2('ES6')}} | |
| {{SpecName('ESDraft', '#sec-json-object', 'JSON')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.JSON")}}