--- 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")}}