JSON

Об'єкт 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 відповідно до поданого значення. Як опція — може включити до результату лише певні поля чи замінити значення полів згідно з побажаннями користувача.

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

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

BCD tables only load in the browser

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