Форматирование JSON онлайн — отступы, сжатие и проверка
Форматирование, минификация и проверка JSON, сортировка ключей, ошибки со строкой и столбцом
Работает в браузере · файлы никуда не загружаются
Что это
JSON форматтер превращает одну длинную строку JSON в читаемый текст с отступами или, наоборот, убирает все необязательные пробелы, чтобы сделать его компактнее. Пользуйтесь им, чтобы разобрать ответ API, привести в порядок файл конфигурации или найти место, где сломался синтаксис. Результат обновляется по мере ввода — нажимать кнопку не нужно.
Как пользоваться
- Вставьте JSON в поле ввода.
- Выберите отступ в 2 или 4 пробела, табуляцию или минификацию.
- Включите сортировку ключей, если нужно упорядочить ключи по коду символа. Она затрагивает и объекты, вложенные в объекты и массивы.
- Скопируйте результат. При ошибке показываются строка и столбец — начинайте исправление оттуда.
Как это работает
- Грамматика — JSON по RFC 8259 (ECMA-404): ключи и строки только в двойных кавычках, без комментариев и висячих запятых.
- Позиции ошибок — строки и столбцы, считая с 1.
\n,\r\nи одиночный\rсчитаются одним переносом строки. Столбцы считаются в символах (кодовых точках), поэтому эмодзи занимает один столбец, а знак ^ под строкой с ошибкой учитывает табуляции. Числа, переполняющиеся до Infinity (например,1e999), становятсяnullс предупреждением, а вложенность глубже 512 уровней отклоняется с явным сообщением. - Сортировка ключей работает на всех уровнях в порядке кодовых единиц (заглавные раньше строчных) и не меняет порядок в массивах. Если ключ встречается в одном объекте дважды (
{"a":1,"a":2}), по правилам JSON остаётся только последнее значение: результат всё равно формируется, но предупреждение называет ключ и строку и столбец повтора. Из-за устройства объектов JavaScript ключи-целые числа вроде"1"и"2"всегда идут первыми в числовом порядке, независимо от параметра. - В результате кириллица, китайские иероглифы и эмодзи сохраняются как есть, а экранируется только то, что требует JSON, например
\nи\". Unicode-экранирование вроде"A"выводится как"A". - Числа читаются как Number из JavaScript. Целые числа больше 2^53 точно не сохраняются, о чём сообщает предупреждение.
Примеры
| Ввод | Параметр | Результат |
|---|---|---|
{"b":1,"a":{"d":2,"c":3}} |
Минификация + сортировка ключей | {"a":{"c":3,"d":2},"b":1} |
{"name":"Иван"} |
2 пробела | несколько строк, "name": "Иван" |
{"a": 1,} |
— | строка 1, столбец 9: неожиданный символ } |
{"id": 12345678901234567890} |
Минификация | {"id":12345678901234567000} (с предупреждением) |
Частые вопросы
Покажет ли инструмент, где ошибка в JSON?
Да. Инструмент просматривает ввод с начала и сообщает строку и столбец первого символа, нарушающего правила, показывая эту строку и знак ^ под нужным местом. Позиция вычисляется самим инструментом, а не берётся из текста ошибки браузера, поэтому во всех браузерах ответ одинаковый.
Принимаются ли комментарии и висячие запятые?
Нет. Принимается только строгий JSON по RFC 8259. Комментарии, висячие запятые, строки в одинарных кавычках и ключи без кавычек считаются ошибками с указанием места.
Могут ли измениться очень большие числа?
Могут. Инструмент использует парсер JSON из JavaScript, поэтому целые числа больше 9007199254740991 (2^53-1) округляются до ближайшего представимого значения. Если во вводе есть такое число, появляется предупреждение. Если важна каждая цифра, записывайте такие ID строками.
Отправляется ли мой JSON на сервер?
Нет. Всё работает в браузере, ничего не загружается и не сохраняется.