--- title: JSON slug: Web/JavaScript/Reference/Global_Objects/JSON tags: - JSON - JavaScript - Довідка - Об'єкт translation_of: Web/JavaScript/Reference/Global_Objects/JSON ---
{{JSRef}}

Об'єкт JSON містить методи для розбору JavaScript Object Notation ({{glossary("JSON")}}) і конвертації значень у JSON. Його можна або просто викликати, або конструювати; і окрім своїх двох методів він не має у собі іншої корисної функціональності.

Опис

Об'єктна нотація JavaScript

JSON - це синтаксис для серіалізації об'єктів, масивів, чисел, строк, булевих значень, та {{jsxref("null")}}. Він заснований на синтаксисі JavaScript, проте дещо відрізняється від нього: деякий JavaScript не є JSON, і деякий JSON не є JavaScript. Докладніше у JSON: The JavaScript subset that isn't.

Відмінності JavaScript і JSON
Тип у 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) - це всі дійсні пробільні символи.

Методи

{{jsxref("JSON.parse()")}}
Розбирає строку як JSON, як опція — перетворює результат і його властивості, та повертає його.
{{jsxref("JSON.stringify()")}}
Повертає строку JSON відповідно до поданого значення. Як опція — може включити до результату лише певні поля чи замінити значення полів згідно з побажаннями користувача.

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

Специфікація Статус Примітка
{{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")}}

Дивіться також