JSON: как проверить, отформатировать и не сломать
API вернул ответ одной строкой на пять тысяч символов, а вам нужно понять, есть ли там поле status. Или наоборот: вы написали конфиг, а валидатор ругается на 1-м символе, хотя визуально всё идеально. Разберём, как быстро привести JSON в порядок и не наступать на одни и те же грабли.
Что JSON прощает, а что нет
JSON — очень формальный формат, и это хорошо: одно и то же везде читается одинаково. Но именно формальность бьёт по пальцам. Вот пять ошибок, которые покрывают почти все случаи «а что ему не нравится?»:
- запятая после последнего элемента массива или объекта — в JavaScript-объекте допустима, в JSON нет;
- одинарные кавычки вместо двойных — строки и ключи только в " ";
- комментарии // или /* */ — в JSON их просто не существует (для конфигов с комментариями придуман JSON5 и YAML);
- непроцитированные ключи — name: не пройдёт, нужно "name":;
- настоящий перенос строки внутри строкового значения — вместо него должен быть escape-символ \n.
Форматирование и минификация
Один и тот же JSON существует в двух видах. Красивый (pretty-print) — с отступами и переносами, его делают, чтобы читать глазами и находить нужное место. Минифицированный — одной строкой без пробелов: так меньше трафика, и в таком виде данные обычно ходят между серверами. Переключаться между видами удобно в форматтере JSON: вставляете строку — получаете дерево с отступами, нажимаете минификацию — снова компактный вариант. Ошибки синтаксиса он подсвечивает сразу, с указанием места.
Когда файл огромный
В большом ответе глазами искать бесполезно. Если нужно вытащить конкретное поле или проверить, что структура вообще соответствует ожиданиям (обязательные поля, типы), пригодятся два инструмента. Поиск пути в JSON находит путь до нужного значения по подстроке — быстро понять, где именно лежит то, что вы ищете. А валидатор JSON Schema проверит документ на соответствие описанной схеме — незаменимо, когда вы принимаете данные от внешнего API.
Форматирование и валидация JSON
Форматирование, украшение, валидация и минификация JSON с древовидным просмотром
Поиск путей JSON
Находите пути к значениям и ключам в объектах JSON с мощным поиском
Валидатор JSON Schema
Валидация JSON данных по JSON Schema с подробными сообщениями об ошибках и поддержкой draft-07