Форматирование и валидация JSON
Вставьте JSON, чтобы отформатировать его с отступом 2, 4 или 8 пробелов, сжать в одну строку или просто проверить, что он разбирается. Корректный JSON возвращается с цветовой подсветкой и размером до и после; некорректный — с собственным сообщением об ошибке вашего браузера. Бесплатно, без регистрации, и ничего из вставленного не покидает ваш браузер.
0 строк · 0 байт
Как пользоваться форматировщиком JSON
- 1. Вставьте JSON. Подойдёт что угодно: от одного значения до большого ответа API. Поле считает строки и байты по мере ввода.
- 2. Выберите отступ. Выберите 2, 4 или 8 пробелов. Настройка влияет только на «Форматировать».
- 3. Выберите действие. Форматировать расставляет отступы, Минифицировать удаляет все необязательные пробелы и переносы строк, а Только проверить проверяет синтаксис и показывает зелёный или красный вердикт без вывода.
- 4. Прочитайте результат. Корректный JSON выводится с цветовой подсветкой (ключи — фиолетовым, строки — зелёным, числа — синим, true и false — оранжевым, null — красным) вместе с размером ввода, размером вывода и процентом изменения. Некорректный JSON вместо этого показывает сообщение парсера. Скопировать вывод копирует то, что вы видите.
Что считается корректным JSON
Инструмент передаёт ваш текст строгому парсеру JSON движка JavaScript, поэтому он принимает ровно то, что допускает стандарт формата, RFC 8259 (та же грамматика, что у ECMA-404), — и ничего сверх этого. Это строже, чем объектный литерал JavaScript, поэтому код, который работает в скрипте, здесь часто не проходит. Типичные причины:
| Ошибка | Пример | Исправление |
|---|---|---|
| Лишняя запятая в конце | {"a": 1,} | Удалите последнюю запятую. |
| Одинарные кавычки | {'a': 1} | Используйте двойные кавычки для каждого ключа и строки. |
| Ключ без кавычек | {a: 1} | Возьмите его в кавычки: {"a": 1}. |
| Комментарий | // note или /* note */ | В JSON нет комментариев; удалите их. |
| Ведущий ноль или знак плюс | 007, +5 | Запишите 7 и 5. |
| NaN, Infinity или undefined | {"x": NaN} | В JSON их нет; используйте null или строку. |
| Перенос строки внутри строки | перенос строки внутри кавычек | Запишите его как два символа \n. |
| Пропущенная запятая | {"a": 1 "b": 2} | Разделяйте элементы запятыми. |
Одиночные 42, "text" или null тоже корректны: начиная с RFC 7159 JSON-текст может быть любым значением, а не только объектом или массивом. Заглавные True или NULL — нет: все три литерала пишутся строчными буквами.
Что меняет форматирование
Инструмент разбирает ваш JSON и записывает его заново, поэтому результат — те же данные в новой разметке, а не посимвольная копия вашего текста. Могут измениться четыре вещи; первые две важны, если отформатированный JSON передаётся другой системе:
- Большие целые теряют точность. Числа JavaScript — это 64-битные числа с плавающей запятой, поэтому целые больше 9 007 199 254 740 991 (253 − 1) округляются.
9007199254740993возвращается как9007199254740992. Если ваши идентификаторы настолько велики, храните их строками. - Повторяющиеся ключи схлопываются. RFC 8259 говорит, что имена должны быть уникальными, но не запрещает повторы; этот инструмент сохраняет последнее значение, а предыдущие отбрасывает.
- Ключи-целые числа выносятся вперёд. В JavaScript ключи вида
"1"и"2"перечисляются раньше остальных в порядке возрастания, поэтому{"b":1,"2":1,"1":1}записывается обратно как{"1":1,"2":1,"b":1}. Остальные ключи сохраняют ваш порядок. - Числа и экранирование переписываются.
1.50становится1.5,1e2—100, а\u00e9—é.
Пример
Возьмём вход на 119 байт, в котором есть большой идентификатор, завершающий нуль, экспонента и экранирование:
Ввод
{"title":"APA Manual","year":2020,"tags":["style","7th"],"id":9007199254740993,"price":1.50,"x":1e2,"name":"caf\u00e9"}
Форматировать с 2 пробелами выводит 156 байт (+31%), по одному элементу в строке, с "id": 9007199254740992, "price": 1.5, "x": 100 и "name": "café". Минифицировать выводит 114 байт (−4%) в одной строке с теми же изменениями. Ничего другого в данных не меняется. Размеры указаны в байтах UTF-8, поэтому é считается как два байта.
Какой инструмент вам нужен?
Эта страница — для самого JSON. Если ваши данные в другом формате, подойдёт соседний инструмент: CSV в JSON для таблиц, запланированные конвертеры YAML to JSON Converter и XML to JSON Converter, Форматировщик XML для XML-документов и HTML Formatter для разметки.
Часто задаваемые вопросы
- Что делает форматировщик JSON?
- Он разбирает JSON и записывает его обратно с единообразными отступами и одним элементом в строке, так что минифицированный ответ API становится читаемым. Поскольку сначала нужно разобрать текст, он заодно работает как валидатор: текст, который не является корректным JSON, даёт ошибку вместо вывода.
- Почему мой JSON считается некорректным?
- Обычно из-за одной из ошибок из таблицы выше: лишней запятой в конце, одинарных кавычек, ключа без кавычек, комментария или пропущенной запятой. Сообщение создаёт встроенный JSON-парсер вашего браузера, поэтому его формулировки отличаются в Chrome, Firefox и Safari, а позиция может как указываться, так и не указываться. Ищите проблему в указанном месте или непосредственно перед ним.
- Можно ли отформатировать JSON с комментариями, JSON5 или JSONC?
- Нет. Комментарии, завершающие запятые и одинарные кавычки не входят в JSON, а этот инструмент использует строгий парсер. Удалите их или преобразуйте файл в обычный JSON в редакторе.
- Чем отличаются «Форматировать», «Минифицировать» и «Только проверить»?
- «Форматировать» добавляет отступы и переносы строк, «Минифицировать» удаляет все необязательные пробелы, давая самый компактный текст, а «Только проверить» проверяет синтаксис и показывает вердикт без вывода. Все три используют один и тот же парсер, поэтому документ, который проходит один, проходит и остальные.
- Почему число в моём JSON изменилось?
- Инструмент читает числа как числа с плавающей запятой JavaScript и выводит их в кратчайшей форме JavaScript. Так
1.50становится1.5, а1e2—100, а целые больше 253 − 1 округляются. Если очень большие идентификаторы должны сохраниться точно, храните их строками. - Загружается ли мой JSON куда-либо?
- Нет. Разбор, форматирование и подсветка выполняются в вашем браузере, и текст, который вы вставляете, не отправляется в CitationEasy или куда-либо ещё. На общем компьютере очистите поле по окончании работы.
- Можно ли отсортировать ключи или использовать табуляцию для отступов?
- Здесь — нет. Отступы: 2, 4 или 8 пробелов, а ключи сохраняют порядок вашего ввода, за исключением ключей-целых чисел, которые выносятся вперёд, как описано выше.