Форматирование JSON
Форматируйте, сжимайте и проверяйте JSON - а если он не разбирается, узнайте точное место ошибки.
Входные данные
0 символовВывод
Форматируйте, сжимайте и проверяйте JSON - а если он не разбирается, узнайте точное место ошибки.
JSON, полученный из лога API или файла конфигурации, обычно представляет собой одну длинную строку, а JSON, который не разбирается, обычно ломается в месте, которое вы не видите. Этот инструмент делает отступы, чтобы вы могли его прочитать, минифицирует его, когда нужен компактный вид, а при повреждении сообщает строку и столбец и показывает эту строку.
Чаще всего вы здесь не для того, чтобы сделать JSON красивым - вы здесь потому, что что-то его отклонило, не объяснив почему. Парсер сообщает строку, столбец и то, что он ожидал, а инструмент выводит эту строку вместе с двумя соседними. Пропущенная запятая на четырёхсотой строке конфигурации - это исправление на тридцать секунд, как только вы знаете, где она находится.
JSON никогда не допускал ни то, ни другое, но файлы, которые люди реально вам передают - tsconfig, настройки VS Code, всё, что редактировалось вручную, - полны ими. Установка флажка удаляет их перед разбором, и инструмент затем сообщает, сколько комментариев и сколько запятых было удалено. Это опционально и указывается точно, потому что форматировщик, который тихо изменяет ваш документ, хуже, чем тот, который его отклоняет.
Он не угадывает, что вы имели в виду. Помимо двух удалений выше, ничего не исправляется: незакрытая скобка, ключ в одинарных кавычках или ключ без кавычек сообщаются, а не переписываются. Сортировка ключей и новые отступы никогда не меняют порядок элементов массива и не меняют строки. В следующем разделе перечислены немногие случаи, когда результат всё же может отличаться от вставленного.
JSON разбирается и записывается заново, поэтому некоторые вещи возвращаются в нормализованном виде. Числа переписываются: 1.50 становится 1.5, 1E3 становится 1000.0, -0 становится 0, а десятичное число с большим количеством цифр, чем вмещает 64-битное число с плавающей точкой, округляется (0.1000000000000000055 становится 0.1). Целые числа сохраняются точно до 4 300 цифр (более длинные отклоняются). Если в объекте повторяется ключ, остаётся только последнее значение, без предупреждения. NaN, Infinity и -Infinity принимаются и сохраняются, хотя стандартный JSON (RFC 8259) их не допускает, а число, слишком большое для float, например 1e400, выводится как Infinity. Если что-то из этого важно для системы, которой вы передаёте данные, проверьте это сами, прежде чем доверять результату без ошибок.
Он отправляется на сервер для разбора и сразу же возвращается в том же ответе. Ничего не записывается на диск, не кэшируется и не логируется, а запись об использовании хранит только количества - размер, глубину вложенности, выбранный режим - никогда сам документ.
Обычно из-за комментариев, завершающих запятых, одинарных кавычек или ключей без кавычек - всё это обычно в конфигурационных файлах и ничто из этого не является допустимым JSON. Отметьте «разрешить комментарии и завершающие запятые» для первых двух; остальные действительно недействительны и должны быть исправлены.
До 2 000 000 символов за запрос; более длинный текст отклоняется с указанием его точной длины. Для файлов такого размера лучше подходит инструмент командной строки, например jq.
Конвейеры логов и потоковые загрузчики читают один объект JSON на строку, а не один большой массив. Выберите этот режим, и массив верхнего уровня вернётся в виде одной компактной записи на строку.
Нет. Порядок ключей объекта не имеет значения в JSON, а порядок массива - который имеет значение - никогда не затрагивается. Сортировка существует для того, чтобы две версии одного и того же документа можно было сравнить без шума.
В Excel для Microsoft 365 сохраните его как файл .json и выберите Data > Get Data > From File > From JSON (Данные > Получить данные > Из файла > Из JSON). Откроется Power Query: массив верхнего уровня показан как List, To Table (В таблицу) превращает его в столбец Records, а кнопка развёртывания (две стрелки) в заголовке столбца раскладывает каждый ключ в отдельный столбец; развёртывание вложенного массива добавляет по строке на элемент. Power Query нужен один корректный JSON-документ, поэтому сначала исправьте здесь ошибки, для которых указаны строка и столбец, и сохраните результат Форматировать или Минифицировать; вывод JSON Lines предназначен для инструментов логирования. Сам этот инструмент не конвертирует JSON в CSV или Excel.
В Python есть встроенная проверка: python -m json.tool data.json выводит документ с отступом в 4 пробела или останавливается с сообщением вроде Expecting ',' delimiter: line 3 column 3. Если установлен jq, jq . data.json форматирует документ, а jq empty data.json только проверяет и ничего не выводит, если файл корректен. Ни один из них не принимает комментарии и висящие запятые, поэтому конфигурационный файл с ними не пройдёт; вставьте его сюда и включите «Разрешить комментарии и висящие запятые», чтобы увидеть, что было удалено.
Парсер ожидал ключ объекта, а нашёл что-то другое. Чаще всего ключи взяты в одинарные кавычки или вовсе без кавычек, как в {'name': 'Asha'}, скопированном из Python или JavaScript, и разбор останавливается на строке 1, столбце 2: JSON требует двойные кавычки вокруг каждого ключа и строки, а этот инструмент никогда не заменяет кавычки, поэтому исправьте их сами. То же сообщение на закрывающей фигурной скобке, как в {"a": 1,}, означает висящую запятую; включите «Разрешить комментарии и висящие запятые», чтобы её убрать. Expecting value на True, False или None означает значения Python: в JSON пишут true, false и null строчными буквами. В Python json.dumps(data) даёт корректный JSON, а print(data) нет. Ошибки показываются так, как их формулирует парсер Python, на английском, чтобы сообщение можно было искать как есть.
Парсер прочитал одно полное значение JSON и нашёл после него ещё текст. Частые причины: лог в формате JSON Lines (NDJSON) с одним объектом на строку, разбор которого останавливается на строке 2, столбце 1; два документа, вставленные друг за другом; или комментарий // после последней закрывающей скобки, который убирает «Разрешить комментарии и висящие запятые». Инструмент проверяет один документ за раз: вставьте одну запись или заключите записи в [ ] через запятую; если затем выбрать JSON Lines, они снова выводятся по одной на строку.