JSON форматтер
Форматируйте, сжимайте и проверяйте JSON — или преобразуйте его в YAML либо CSV. Ошибки указывают точную строку и столбец, а четыре самые частые причины называются по имени.
Что JSON не разрешает
JSON — строгое подмножество синтаксиса объектов JavaScript, и различия подводят всех. Всё это некорректно:
| Неверно | Верно | Причина |
|---|---|---|
{name: "Ada"} | {"name": "Ada"} | Ключи должны быть в кавычках |
{'a': 1} | {"a": 1} | Только двойные кавычки |
[1, 2, 3,] | [1, 2, 3] | Никаких запятых в конце |
{"a": 1} // note | {"a": 1} | Комментарии запрещены |
{"a": undefined} | {"a": null} | undefined не является значением JSON |
{"a": .5} | {"a": 0.5} | Нужна цифра перед точкой |
Предел точности
Сам JSON не ограничивает размер числа, но JavaScript разбирает любое
число в 64-битное с плавающей точкой. Начиная с 2⁵³ − 1, то есть с
9 007 199 254 740 991, целые числа молча округляются. Вставьте
9007199254740993 — вернётся
9007199254740992: вставленный сюда 64-битный идентификатор
базы данных окажется незаметно неверным, и ни один форматировщик этого не
предотвратит.
Правильное исправление — на стороне API: отдавайте большие идентификаторы строками. Если вы разбираетесь, почему ID в базе и ID в JSON не совпадают, начинать нужно с этого.
Частые вопросы
Почему мой JSON не разбирается?
Почти всегда одно из четырёх: лишняя запятая после последнего элемента, одинарные кавычки вместо двойных, ключи без кавычек или комментарий. Все четыре допустимы в JavaScript и запрещены в JSON. Этот инструмент указывает точную строку и столбец и называет, какую из четырёх причин нашёл, — читать формулировку движка не нужно.
Отправляются ли мои данные куда-нибудь?
Нет. Разбор и форматирование выполняет собственный JSON-движок браузера, локально. Для этого инструмента это важнее, чем кажется: в онлайн-форматировщики регулярно вставляют ответы API с токенами, данными клиентов и внутренними идентификаторами.
Чем форматирование отличается от сжатия?
Данные получаются одинаковыми. Форматирование добавляет отступы и переводы строк, чтобы структуру мог прочитать человек; сжатие убирает каждый необязательный пробел, чтобы объём был минимальным. Сжимайте для передачи и хранения, форматируйте для чтения и сравнения.
Почему изменились мои большие числа?
Числа в JavaScript — это 64-битные числа с плавающей точкой, поэтому любое целое больше 9 007 199 254 740 991 теряет точность. Это обычная проблема с 64-битными идентификаторами баз данных и снежинками вроде твиттерских. Если у вас такие ID, API должен отдавать их строками. Это ограничение JSON в JavaScript, а не этого инструмента.
Похожие инструменты
- Конструктор схем и блок-схемРисуйте блок-схемы и диаграммы, соединяйте блоки стрелками, которые прокладывают себя сами, и раскладывайте всё автоматически. Экспорт в SVG.
- Генератор паролейСоздавайте надёжные пароли криптографическим генератором браузера с оценкой стойкости.
- HTML-сущностиКодируйте текст для HTML или декодируйте сущности обратно — ломающие разметку знаки, именованные наборы, числовые ссылки до эмодзи. Ровно один проход.