Блог
Русский

Форматирование JSON онлайн — отступы, сжатие и проверка

Форматирование, минификация и проверка JSON, сортировка ключей, ошибки со строкой и столбцом

Работает в браузере · файлы никуда не загружаются

Результат

Что это

JSON форматтер превращает одну длинную строку JSON в читаемый текст с отступами или, наоборот, убирает все необязательные пробелы, чтобы сделать его компактнее. Пользуйтесь им, чтобы разобрать ответ API, привести в порядок файл конфигурации или найти место, где сломался синтаксис. Результат обновляется по мере ввода — нажимать кнопку не нужно.

Как пользоваться

  1. Вставьте JSON в поле ввода.
  2. Выберите отступ в 2 или 4 пробела, табуляцию или минификацию.
  3. Включите сортировку ключей, если нужно упорядочить ключи по коду символа. Она затрагивает и объекты, вложенные в объекты и массивы.
  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 на сервер?

Нет. Всё работает в браузере, ничего не загружается и не сохраняется.

Не нашли нужный инструмент?