JSON форматтер и валидатор

Вставьте JSON или откройте файл. Он проверяется по мере ввода, выводится с выбранным отступом или сжимается, а ошибка показывается со строкой, столбцом и подсказкой, что исправить.

Вставьте его, перетащите файл в поле или откройте. Ничего не загружается.
Результат

Вставьте JSON в поле или нажмите «Пример», чтобы посмотреть, как это работает.

Делаете API, которое отдаёт JSON? Для него нужен сервер. Сейчас от 3,02 € в месяц, на выбор: 2 226 серверов.

Работает в вашем браузере: ничего из введённого не отправляется на сервер.

Как это работает

Страница читает ваш текст строгим парсером JSON по RFC 8259, стандарту JSON. Он останавливается на первом символе, который не может быть JSON, и сообщает, где это и почему: лишняя запятая в конце, одинарная кавычка, пропущенное двоеточие или запятая, комментарий, число, недопустимое в JSON.

Корректный JSON записывается обратно с выбранным отступом или, при сжатии, без всех необязательных пробелов. Числа и строки копируются в точности как вы их написали, поэтому длинный идентификатор вроде 12345678901234567890 сохраняет все цифры, а escape-последовательность вроде \u00e9 остаётся как есть. Сортировка упорядочивает ключи каждого объекта по кодовым точкам их символов; ключи, которые встречаются дважды, сохраняют обе копии по порядку.

Всё выполняется в вашем браузере. Файлы до нескольких мегабайт форматируются мгновенно; если данных больше 1 МБ, страница ждёт, пока вы нажмёте «Форматировать», а не переформатирует их при каждом нажатии клавиши.

Пример

В этих данных после последнего элемента стоит лишняя запятая:

input.json
{
  "name": "web-1",
  "ports": [80, 443,]
}

Валидатор останавливается на строке 3, столбце 20, на этой запятой, и сообщает, что в JSON нельзя ставить запятую после последнего элемента. Удалите её, и текст отформатируется, как показано, либо сожмётся в одну строку из 33 символов.

formatted.json
{
  "name": "web-1",
  "ports": [
    80,
    443
  ]
}

Вопросы

Почему мой JSON не проходит из-за запятой в конце?

Потому что JSON допускает запятую только между двумя элементами. JavaScript, Python и многие форматы конфигурации принимают запятую после последнего элемента списка или объекта; JSON — нет, и строгие парсеры, такие как JSON.parse, jq и большинство API, отклоняют весь документ. Удалите запятую, на которую указывает ошибка.

Бывают ли в JSON комментарии?

Нет. В JSON нет синтаксиса комментариев. Некоторые программы вместо него читают JSONC или JSON5, где комментарии разрешены (настройки VS Code и tsconfig.json — это JSONC), но строгий парсер JSON их отклоняет. Удалите комментарии или оставьте заметку в обычном поле, например "_comment".

Меняет ли форматирование мои числа?

Здесь нет. JSON.parse в JavaScript превращает каждое число в 64-битное значение с плавающей запятой, поэтому 12345678901234567890 возвращается как 12345678901234567000, а 1.10 — как 1.1. Этот форматтер числа не преобразует: числа, строки и escape-последовательности записываются обратно в точности как были. Меняются только пробелы и переводы строк между ними.

Чем форматирование отличается от сжатия?

Форматирование добавляет переводы строк и отступы, чтобы человеку было легче читать структуру. Сжатие убирает все пробелы и переводы строк, которые JSON не нужны, из-за чего файл занимает меньше места и быстрее передаётся. В обоих случаях данные одни и те же; программа читает их одинаково.

Отправляется ли куда-нибудь вставленный JSON?

Нет. Его разбирает и форматирует скрипт этой страницы в вашем браузере, и он никогда не покидает ваше устройство, поэтому конфигурации и ответы API с ключами или персональными данными вставлять безопасно. После загрузки страница работает и без интернета.