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

Опис

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

JSON - це синтаксис для серіалізації об'єктів, масивів, чисел, строк, булевих значень, та 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) дозволені; строки повинні виділятись подвійними лапками. Зверніть увагу на наступні приклади, де JSON.parse() нормально працює, проте при обчисленні виразу як JavaScript-коду буде отримана помилка 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) - це всі дійсні пробільні символи.

Методи

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

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

Специфікація Статус Примітка
ECMAScript 5.1 (ECMA-262)
The definition of 'JSON' in that specification.
Standard Первинне визначення.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'JSON' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'JSON' in that specification.
Draft  

Підтримка у браузерах

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 3.5IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes
parseChrome Full support YesEdge Full support YesFirefox Full support 3.5IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes
stringifyChrome Full support YesEdge Full support YesFirefox Full support 3.5IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes
JavaScript is a superset of JSONChrome Full support 66Edge No support NoFirefox Full support 62IE No support NoOpera Full support 53Safari Full support YesWebView Android Full support 66Chrome Android Full support 66Edge Mobile No support NoFirefox Android Full support 62Opera Android Full support 53Safari iOS Full support YesSamsung Internet Android No support Nonodejs Full support 10.0.0

Legend

Full support  
Full support
No support  
No support

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

Мітки документа й учасники

Зробили внесок у цю сторінку: AdriandeCita, Ende93
Востаннє оновлена: AdriandeCita,