Українська

Інструменти розробника · JSON форматування & реаніматор

Всі JSON граматика на одній сторінці: шість типів значень, два контейнери

· Підземелля

Опубліковано ToolAcre · Редакція журналу

свінгери стандарти введення

Всі JSON граматика на одній сторінці: шість типів значень, два контейнери ілюстровані з JSON токени і точний контрольний ліміт
Головна ToolAcre векторна ілюстрація

JSON«Вся граматика вписується на одній сторінці, і знаючи її серцем робить кожну помилкову помилку. Цей пост проходить через шість типів цін, два контейнери, і ручні правила, які подорожують людей вгору.

Кожна помилка, яку ви коли-небудь бачили, є однією сторінкою

Кожна помилка синтаксису – це розбите очікування у компактній граматиці. Після відкриття об'єкта, парсер очікує на цитоване ім'я учасника або закриття латунь; після назви він очікує колону; після значення він очікує коми або закінчення контейнера. Читання помилки, як не вдалося переходити, більш корисно, ніж лікувати зазначений характер як таємничий.

ToolAcre приймає стандарт JSON значення і білий простір, потім застосовується два практичних обмеження вводу. Текстовий довший ніж 8,000,000 символи відхиляються перед парсуванням, а також розкидка сканера за межі 512 контейнери відхиляються, а не трауровані в невизначений термін. Ми не нова JSON види. У них діагностичний визнає перший момент, де потік токенів більше не відповідає граматиці.

6 значень — об'єкт, масив, рядок, номер, true/false і нуль, і те, що немає нічого іншого

А.А JSON значення є об'єктом, масивом, рядком, номером, болеан або null. Об'єкти та масиви можуть містити будь-яку з шести, включаючи більше контейнерів. Лічові заклинання точно `true`, `false` і `null`; капіталізація не гнучка. Жетони такі як `True`, `None`, `undefined`, `NaN` і `Infinity` поза строгими JSON навіть якщо інша мова визнає деякі з них.

Цей короткий список робить класифікацію корисної техніки знеболювання. Вступ `{"reading": NaN}`, товста колона правильно вводить значення, але `N` не може бути використана в будь-якому місці. Замініть його тільки після того, як вирішити, що дані повинні означати, можливо `null` або процитований статус. Синтаксис може відхилити токени; не можна вибрати заміну програми або визначити, чи є поле там.

Об'єкти і масиви — співрозмовні члени, товста колона і чому RFC 8259 замовлення та дублікати імен для реалізації

Об'єкти містять ім'я коми-сепаровані/value членів. Кожна назва - це двокомпонентний рядок, який знаходиться в колоні і значенням. Арраї містять комісні значення з іменами або колонами. Зручність `{}` і `[]` контейнери діють, але кома не може призвести, причеп або з'являються двічі. Зібравши кожного глухого до контейнера швидко виводить безліч видимих «невибагливих жетонів» збої.

Прізвище, які будуть використані для того, щоб бути унікальними, але дублікати не відхилені цими речами. `{"port": 80, "port": 443}` пари `JSON.parse` зберігає пізнішу вартість. Після цього випромінює лише те, що вижили його, тому чим раніше текст не може бути відновлений з результату. Посади масиву полягають в різному порядку: кожен елемент залишається присутнім і його замовлення є частиною значення.

Рядки і цифри точно

Стрінги використовують подвійні котирування. Спинки можуть ввести цитату, задню, слеш, `b`, `f`, `n`, `r`, `t`Увімкніть, будь ласка, будь ласка, зв'яжіться з нами. Одинарні лапки є звичайними недійсними токени за межами рядка. Ці правила пояснюють, чому скопійовані JavaScript лілі і задані багатолінійні тексти можуть виглядати читати при цьому не виключаючи суворий JSON валідація.

Кількість може мати знак мінуса, цілу частину, додаткова дроба і додаткова тенденція. Не можна починати з `+`, використовувати шестигранну нотацію, перенести провідну нульову перед іншою цифрою, або записати нефіцитне значення. `-0.25e+2` діє; `01`, `.5`, `2.` і `Infinity` нема. Зареєструватися на граматиці, нехай JavaScript може зберігати кожну цифру точно.

Білий простір і рівень вершини

Зовнішні рядки, JSON білий простір обмежений простором, горизонтальною вкладкою, подачею лінії та поверненням перевезення. Нерозривний простір, що скопіюється з веб-сторінки, не взаємозамінюється з звичайним простором. Форматування може вільно вибрати серед дозволених білих просторів навколо жетонів, але він повинен зберігати білий простір, який належить до цитованих рядків, оскільки ці символи є даними.

Повний документ може бути будь-яким JSON значення, не тільки об'єкт або масив. `42`, `false` і `"ready"` • дійсні тексти верхнього рівня. Що таке заборонена, що є другим значенням після першого: `42 43` - два документи, не одне. Цей вираз пояснює, чому новий JSON вимагає запису-зареєструвального обслуговування, а не одного звичайного пазування всього файлу.

Успішний приклад: оформлення невеликого документа вручну

Зареєструватися `{"order": [17, null, {"paid": true}], "note": "ship soon"}`. Починається кореневий об'єкт `order`; значення його масиву містить число, null та інший об'єкт. Після введення коми `note`, значення якого є рядок з втечу нову лінію. Кожна колона, кома і закриття дельімітера має одну граматикуальну роль.

Тепер прибрати котирування перед `paid`. Після того, як непристойна латанець, парсер очікує закриття латунь або цитоване ім'я, тому він не вдається в `p`. Як правило, додайте кому після `true`; парсер приймає кому, а потім не виходить на `}` тому, що інший учасник повинен дотримуватися. Вирокувати ці позиції вручну перетворюється на підтвердження та дискурування випадкових записів.

Що це не криється

Граматика не має дати, десятковий-гроші, бінарні, UUID або тип тривалості. Додаток зазвичай представляють ті поняття з рядками або цифрами і накладають конвенції окремо. Терміни можна бути ідеальною JSON рядок при цьому містить неможливу дату. Таким чином, у випадку, якщо ви не хочете використовувати одинички, не виходячи з правила, що стосуються пар, можна відмітити необхідні властивості або використовувати неправильні одиниці без порушення правила.

ToolAcre не виконує перевірки схеми, перевірку домену або канонічне дослідження. Не перезареєструватися JSON5 або JSONC такі функції, як коментарі та причіпні коми. Його робота вузька: прийняти один строгий JSON текст у межах товару, форматування значення, визначення синтаксису. Зберігайте пізніше питання про форму та значення в валідації заявки.

Поведінка: запам'ятовуйте граматику, довірте позицію

Стильний контрольний список є коротким: шість категорій значення, позначених іменами об'єктів, комами тільки між предметами, колонами тільки між іменами і значеннями, строгими рядками, суворим числом, писанням, чотири символи білого простору і точно одним значенням верхнього рівня. Якщо документ не вдається, визначимо, що граматика дозволено відразу перед вказаною позицією і порівняти, що очікується з символом, власне, присутні.

Довірте позицію як першої неможливої точки, не завжди характер, який потребує видалення. Закриваючи латунь може бути виділено, оскільки передовий кома обіцяє інший учасник; безневинний лист може бути виділений, оскільки його відкриття не вистачає. Ремонт причин, рерайонна перевірка і повторення. Для негабаритних або надзвичайно глибоких вхідних, адресних 8-мільйон-характер або 512- глибинний продукт, що межує з синтаксисом, може допомогти.