Як користуватися
- Вставте JSON у поле, відкрийте файл або натисніть «Спробувати приклад», щоб побачити звіт про помилку.
- Перегляньте результат: зелене повідомлення означає, що JSON коректний, а в разі помилки буде показано першу з них, її рядок і стовпець та позначку біля проблемного місця.
- Виправте помилку за підказкою та перевірте ще раз. Результат оновлюється під час введення.
- Якщо JSON коректний, перегляньте статистику: тип кореневого значення, кількість ключів, глибину вкладеності та розмір у байтах.
Як це працює
Валідатор перевіряє синтаксис відповідно до стандарту JSON (RFC 8259 / ECMA-404) за допомогою вбудованого в браузер парсера JSON. Тому документ, який проходить цю перевірку, приймається функцією JSON.parse у JavaScript та парсерами інших мов, що відповідають стандарту. Якщо під час розбору виникає помилка, суворий перевіряльник, створений для цього інструмента, проходить текст один раз, знаходить першу помилку та її точні рядок і стовпець, а потім показує цей рядок із символом ^ під проблемним місцем.
Підказки стосуються типових помилок під час ручного написання JSON або копіювання з JavaScript: коми після останнього елемента, рядки в одинарних лапках, ключі без лапок, коментарі // або /* */, значення на кшталт NaN, Infinity чи undefined, необроблені переноси рядків усередині рядків і два документи JSON, вставлені один за одним (як у файлах JSON Lines). Повідомляється лише про першу помилку, адже одна помилка часто спричиняє проблеми з усім подальшим текстом.
Інструмент перевіряє лише синтаксис. Він не перевіряє дані за JSON Schema, тому не може визначити, чи бракує обов’язкового поля. Також він не попереджає про повторювані ключі: стандарт їх дозволяє, а більшість парсерів залишає останнє значення. Статистика враховує ключі в усіх об’єктах на кожному рівні; глибина дорівнює 1 для простого об’єкта або масиву й збільшується на одиницю з кожним рівнем вкладеності.
Приклади
Конфігурація, скопійована з JavaScript
{name: 'demo', debug: true,} спричиняє помилку в рядку 1, стовпці 2: «Ключі об’єкта потрібно брати в подвійні лапки». Після взяття ключа в лапки наступна перевірка вказує на рядок в одинарних лапках, а потім — на зайву кому.
Файл журналу з одним об’єктом у кожному рядку
Якщо вставити два рядки, наприклад {"id":1} і {"id":2}, з’явиться повідомлення «після завершення значення JSON є додатковий вміст» для рядка 2. Кожен рядок окремо є коректним JSON (JSON Lines), але разом їх потрібно помістити в [ ] і розділити комою.
Перевірка даних API
Відповідь розміром 2 MB перевіряється миттєво. Результат показує: кореневий тип — Array, 1,500 елементів верхнього рівня та глибина вкладеності 4. Це швидка перевірка перед написанням коду для роботи з даними.
Поширені запитання
Чи перевіряє цей інструмент відповідність JSON Schema?
Ні. Він перевіряє, чи правильно сформовано текст JSON. Щоб перевірити обов’язкові поля, типи або формати, потрібен валідатор JSON Schema, якого в цьому інструменті немає.
Чому показано лише одну помилку?
Після першої синтаксичної помилки парсер не може знати, що саме мав на увазі автор, тому подальші «помилки» часто спричинені першою. Виправте вказану проблему — і наступна помилка, якщо вона є, з’явиться одразу.
Чи можуть коментарі або кінцеві коми бути допустимими?
У JSON — ні. У форматах на кшталт JSON5 і JSONC, які використовують у файлах налаштувань деяких редакторів, вони дозволені. Але стандартні парсери JSON їх відхиляють, тому тут вони позначаються як помилки.
Чи є окреме значення, наприклад 42 або "hello", коректним JSON?
Так. Відповідно до RFC 7159 кореневим значенням JSON може бути будь-яке значення, а не лише об’єкт чи масив. Деякі старіші інструменти й API досі очікують на верхньому рівні об’єкт або масив.
Чому номер стовпця може відрізнятися від того, що показує мій редактор?
Стовпці рахуються в кодових одиницях UTF-16 — так само, як JavaScript обчислює довжину рядка. Емодзі та деякі рідкісні символи займають дві одиниці, а табуляція — один стовпець, хоча редактори можуть відображати її ширшою.
Конфіденційність
Перевірка виконується повністю у вашому браузері. Вставлений або відкритий JSON не завантажується на сервер, не зберігається й не передається в аналітику.