Восстановление JSON

Бесплатный онлайн-инструмент восстановления JSON. Автоматически находит и исправляет висячие запятые, одинарные кавычки, ключи без кавычек, незакрытые скобки, комментарии и обёртки Markdown. Разработан для очистки вывода ИИ и восстановления обрезанных JSON. Вся обработка выполняется локально в браузере.

Похожие

Что такое восстановление JSON (JSON Repair)?

Восстановление JSON (JSON Repair) — это процесс автоматического преобразования нестандартного JSON-текста, который не может быть обработан строгим JSON-парсером из-за синтаксических ошибок, в допустимую JSON-строку, соответствующую RFC 8259. В отличие от «форматирования JSON (Beautify)», восстановление JSON решает не различия в форматировании, а структурные ошибки: висячие запятые, одинарные кавычки, пропущенные кавычки, незакрытые скобки, обёртки Markdown, комментарии — всё это вызывает SyntaxError в JSON.parse(), но чрезвычайно распространено в реальной разработке.

Источники «нестандартного» JSON в реальных проектах весьма конкретны: ① при копировании из LLM, таких как ChatGPT / Claude / Gemini, вывод часто оборачивается в Markdown-блоки кода (```json ... ```) или сопровождается пояснительным текстом; ② при копировании из console.log() объектов JavaScript могут присутствовать висячие запятые и одинарные кавычки; ③ в конфигурационных файлах часто используется расширенный синтаксис JSON5 / JSONC (допускающий комментарии, ключи без кавычек, многострочные строки и т.д.); ④ потоковые ответы или обрезка логов могут оборвать JSON на середине, с отсутствующей закрывающей `}` или `"`. Инструмент восстановления JSON сканирует входной текст, выявляет эти типичные проблемы и восстанавливает содержимое до стандартного JSON по принципу «минимального вмешательства», максимально сохраняя семантику исходных данных.

На уровне реализации восстановление JSON обычно состоит из двух этапов: ① толерантный разбор (tolerant parse) — использование сканера на основе конечного автомата вместо регулярных выражений для пошаговой обработки потока символов, с различением синтаксических символов «внутри строк» и «вне строк»; ② канонический вывод (canonical output) — повторная генерация с помощью `JSON.parse` + `JSON.stringify`, обеспечивающая 100% совместимость вывода с любым строгим парсером. Инструмент восстановления JSON от GeekFormat выполняет весь процесс восстановления локально в браузере, никогда не отправляя исходное содержимое на какой-либо сервер, что подходит для обработки конфиденциальных ответов API, внутренних файлов конфигурации и вывода моделей ИИ.

Варианты использования

  • Очистка вывода AI/LLM: преобразование в один клик JSON с обёрткой Markdown, пояснительным текстом и висячими запятыми от ChatGPT/Claude в стандартный JSON
  • Отладка и устранение неполадок API: быстрое дополнение скобок и строк при обрезанных ответах API из-за проблем шлюза или сети для определения исходной структуры данных
  • Объектные литералы JavaScript, скопированные из консоли: единое исправление одинарных кавычек, висячих запятых и ключей без кавычек
  • Очистка конфигурационных файлов: удаление комментариев из JSON5/JSONC для получения стандартного JSON, готового к единообразной передаче в downstream-сервисы
  • Восстановление данных из логов и буфера обмена: быстрая стандартизация фрагментов JSON, содержащих комментарии, специальные пробелы или обрезку
  • Предварительная обработка при миграции данных: добавление шага восстановления в конвейер миграции данных для предотвращения блокировки всего пакета ETL из-за нескольких невалидных JSON

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

  1. Вставьте JSON с ошибками, обёрткой Markdown или обрезанный JSON в левое поле ввода, или нажмите «Пример» для загрузки типичного повреждённого JSON, или загрузите файл .json/.txt
  2. Инструмент автоматически обнаружит и исправит распространённые синтаксические проблемы; в правой области вывода отобразится отформатированный стандартный JSON и количество исправленных проблем каждого типа
  3. Если остались красные сообщения об ошибках, вы можете вручную отредактировать ввод и повторно запустить восстановление (Mac: ⌘+Shift+R, Windows: Ctrl+Shift+R)
  4. Убедившись в правильности структуры, нажмите «Копировать», чтобы поместить восстановленный результат в буфер обмена, или «Скачать», чтобы сохранить как repaired.json для дальнейшего форматирования, валидации и т.д.

Функции

  • Охватывает 7 распространённых типов синтаксических ошибок: висячие запятые, одинарные кавычки, ключи без кавычек, незакрытые строки, комментарии, пропущенные скобки, обёртки Markdown-блоков кода
  • Оптимизированная очистка вывода ИИ: автоматическое удаление обёрток ```json и пояснительного текста вне блоков кода, распознавание типичного вывода ChatGPT, Claude, Gemini и других LLM
  • Совместимость с JSON5/JSONC: парсинг расширенного синтаксиса, включая комментарии, нестрогие кавычки и специальные пробелы (например, невидимые символы Unicode)
  • Интеллектуальное дополнение обрезанного JSON: обработка обрезанных ответов API и отсутствующих закрывающих скобок путём автоматического добавления недостающих скобок и кавычек
  • Визуализация проблем восстановления: автоматический подсчёт и отображение количества исправленных проблем каждого типа для удобного аудита и ручной проверки
  • Локальная обработка для конфиденциальности: разбор, восстановление и форматирование выполняются полностью в браузере, входные данные не отправляются на сервер
  • Бесшовная передача в форматирование: восстановленный стандартный JSON можно одним кликом передать в форматировщик JSON, валидатор Schema или генератор кода
  • Загрузка файлов и примеров: поддержка загрузки файлов .json/.txt или загрузки образца по клику для быстрой проверки результатов восстановления

Примеры кода

Программное восстановление с помощью JavaScript-библиотеки jsonrepair

javascript
// npm install jsonrepair
import { jsonrepair } from 'jsonrepair';

const broken = `{
  name: 'Alice',
  age: 30,
  tags: ['dev', 'writer',], // trailing comma + comment
}`;

try {
  const fixed = jsonrepair(broken);
  const obj = JSON.parse(fixed);
  console.log(obj);
  // => { name: 'Alice', age: 30, tags: ['dev', 'writer'] }
} catch (err) {
  console.error('Still unrepairable:', err.message);
}

Программное восстановление с помощью Python-библиотеки jsonrepair

python
# pip install jsonrepair
from jsonrepair import jsonrepair
import json

broken = '''{
  name: "Alice",
  age: 30,
  tags: ["dev", "writer",], // trailing comma + comment
}'''

fixed = jsonrepair(broken)
obj = json.loads(fixed)
print(obj)
# => {'name': 'Alice', 'age': 30, 'tags': ['dev', 'writer']}

Быстрое исправление висячих запятых с помощью jq + sed (только для экстренных случаев)

bash
# Удаление висячих запятых из объектов/массивов (экстренный вариант; НЕ обрабатывает комментарии / одинарные кавычки)
# Для сложных сценариев используйте специализированную библиотеку, например jsonrepair
sed -E 's/,([ \t]*[}\]])/\1/g' broken.json > clean.json

# Проверка восстановленного результата
jq . clean.json >/dev/null && echo 'JSON is valid'

Часто задаваемые вопросы

В чём разница между восстановлением JSON и форматированием JSON?

Форматирование JSON только переформатирует JSON, который уже является допустимым, но имеет несоответствия в отступах или пробелах. Восстановление JSON, напротив, специально обрабатывает JSON с синтаксическими ошибками: сначала исправляет структурные проблемы, такие как висячие запятые, одинарные кавычки, комментарии и пропущенные скобки, а затем выводит стандартный формат. Если инструмент форматирования выдаёт SyntaxError, сначала следует использовать восстановление JSON.

Какие распространённые синтаксические ошибки JSON может исправить инструмент?

Инструмент включает интеллектуальные алгоритмы восстановления для следующих частых проблем: 1) Висячие запятые (Trailing comma); 2) Одинарные кавычки вместо двойных; 3) Ключи без кавычек; 4) Незакрытые строки; 5) Однострочные и блочные комментарии JavaScript; 6) JSON, обёрнутый в блоки кода Markdown; 7) Отсутствующие закрывающие скобки из-за обрезанного окончания.

Почему вывод JSON от ИИ или LLM часто не соответствует стандарту?

Большие языковые модели (ChatGPT, Claude, Gemini и др.) часто генерируют JSON с обёрткой Markdown (```json ... ```), пояснительным текстом до или после, висячими запятыми, комментариями или неполной структурой из-за обрезки токенов. Восстановление JSON специально оптимизировано для таких сценариев — очистка вывода ИИ до допустимого JSON в один клик.

Всегда ли восстановленный JSON структурно идентичен исходным данным?

Восстановленный вывод является допустимой JSON-строкой, соответствующей стандарту JSON; семантика данных сохраняется в подавляющем большинстве случаев. Однако, поскольку восстановление основано на эвристических правилах, в крайне повреждённых или неоднозначных сценариях (например, несколько пропущенных запятых в одной строке) результат может немного отличаться от исходного замысла. Для критически важных данных рекомендуется дополнительно использовать валидацию Schema или ручную проверку.

Почему бы просто не использовать Python json.loads или JavaScript JSON.parse напрямую?

Нативные парсеры могут только выдавать ошибку SyntaxError, но не могут выполнять восстановление. Восстановление JSON — это толерантный слой, расположенный перед нативными парсерами: сначала он пытается исправить текст, затем передаёт его нативному парсеру, обеспечивая возможность обработки конечного вывода любым строгим JSON-парсером. Тот же подход можно применить для предварительной обработки на стороне сервера в production-среде.

Сохраняются ли комментарии из JSON5 / JSONC?

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

Можно ли восстановить обрезанный JSON (например, вывод потоковой передачи был оборван)?

Да. Инструмент пытается сопоставить отсутствующие закрывающие скобки, квадратные скобки и закрывающие кавычки строк, максимально сохраняя распознанное содержимое. Примечание: если точка обрезки находится внутри строкового литерала, может потребоваться ручное добавление недостающих символов.

Происходит ли потеря данных после восстановления?

В распространённых сценариях восстановления (удаление висячих запятых, добавление кавычек, дополнение скобок, удаление комментариев) семантика данных полностью сохраняется. В редких случаях, когда исходное содержимое имеет необратимую неоднозначность (например, разрушенный уровень вложенности), инструмент выполняет максимально консервативное восстановление и сохраняет исходный вид; он не будет активно удалять поля или ключи.

Можно ли пакетно восстановить несколько JSON?

Данный инструмент восстанавливает по одному вводу за раз. Для пакетных сценариев рекомендуется сначала запустить базовый алгоритм локально в скрипте (например, библиотека jsonrepair для Python или npm-пакет josdejong/jsonrepair), а затем импортировать результат в этот инструмент для ручной проверки и форматирования.

Нужно ли после восстановления выполнять форматирование и валидацию Schema?

Рекомендуется. Восстановление в первую очередь решает ошибки на уровне синтаксиса; форматирование и валидация Schema обеспечивают читаемость и бизнес-корректность. Вывод инструмента восстановления легко передаётся в форматировщик JSON, валидатор Schema и генераторы кода от GeekFormat.

Загружает ли инструмент мой JSON на сервер?

Нет. Весь разбор, восстановление и форматирование выполняются локально в браузере; ни входные данные, ни промежуточные результаты не отправляются на какой-либо сервер. Работает офлайн, подходит для обработки JSON, содержащего конфиденциальную информацию (например, ответы API production-среды, внутренние конфигурации).

Можно ли зафиксировать стратегию восстановления, используемую каждый раз?

Данный инструмент по умолчанию включает все распространённые правила восстановления для максимальной успешности. Если вам нужен тонкий контроль над правилами для конкретного языка или команды, вы можете использовать библиотеку jsonrepair в своей production-среде и выборочно включать или отключать определённые правила. Вывод этого инструмента также может служить стандартизированным входом для последующей валидации.

Устранение неполадок

Ошибка «Невозможно восстановить этот JSON»

Причина: входной текст имеет серьёзные структурные повреждения, такие как множественные пропущенные скобки, обрезанные строковые литералы или повреждённый набор символов. Решение: сначала откройте исходный файл в простом текстовом редакторе, убедитесь, что кодировка — UTF-8 без BOM и файл не является сжатым бинарным; если данные получены из ответа API, свяжитесь с источником для дополнения; для крайне повреждённых наборов данных используйте исходный файл напрямую.

Поля переместились в неправильную позицию после восстановления

Причина: исходный текст содержал символы синтаксиса JSON (например, //, /*, }) внутри комментариев или строковых литералов, что ввело парсер в заблуждение; либо уровень вложенности настолько глубок, что сопоставление скобок нарушено. Решение: вручную экранируйте // и /* внутри строк; для данных с глубокой вложенностью добавьте временные внешние скобки или переносы строк перед повторным восстановлением.

Пояснительный текст в выводе ИИ не удалён

Причина: вывод ИИ часто начинается или заканчивается естественным языком (например, «Вот результат:») и может занимать несколько строк. Решение: с помощью текстового редактора удалите текст за пределами блока JSON, оставив только содержимое внутри самой внешней обёртки ```json; если инструмент всё ещё не может распознать, вручную добавьте внешние { } перед повторным восстановлением.

Размер не изменился после восстановления или некоторые символы были заменены

Причина: оригинал содержал обратные слеши, экранированные последовательности Unicode или HTML-сущности, которые инструмент переэкранировал в соответствии с правилами JSON. Решение: проверьте, не был ли оригинал вложен в строку JS; если он находится на HTML-странице, сначала выполните HTML-декодирование; увеличение количества символов после экранирования — нормальное явление.

Браузер показывает «Недостаточно памяти» или страница зависает

Причина: один ввод объёмом более 5–10 МБ создаёт значительную нагрузку на память браузера. Решение: разделите данные на более мелкие пакеты (по 1–2 МБ); или используйте библиотеку jsonrepair на стороне сервера для потоковой обработки; небольшая разница между восстановленным результатом и оригиналом — норма.

После восстановления валидация Schema всё ещё сообщает об ошибках

Причина: восстановление JSON исправляет только ошибки на уровне синтаксиса; оно не проверяет соответствие бизнес-имён полей, типов или значений Schema. Решение: используйте инструмент валидации JSON Schema от GeekFormat для проверки ограничений полей; найдите конкретные поля по ошибкам и исправьте их вручную.

Глоссарий

JSON
JavaScript Object Notation, лёгкий формат обмена данными на основе пар ключ-значение, определённый в RFC 8259. Фактический стандарт для REST API, файлов конфигурации и логов.
RFC 8259
Официальная спецификация JSON, выпущенная IETF, определяющая строгий синтаксис допустимого JSON — все ключи должны быть в двойных кавычках, только ограниченный набор символов в строках требует экранирования, комментарии и висячие запятые не допускаются.
JSON.parse
Строгий JSON-парсер, встроенный в JavaScript и современные браузеры, следующий RFC 8259. При любой синтаксической ошибке выбрасывает SyntaxError и не может выполнять толерантное восстановление.
JSON5
Расширенный синтаксис JSON (нестандартный), допускающий ключи без кавычек, строки в одинарных кавычках, комментарии (// и /* */), висячие запятые, шестнадцатеричные числа и т.д. Удобнее для ручного написания, но несовместим с JSON.parse.
JSONC
JSON with Comments, общее название, используемое редакторами вроде VS Code для JSON-файлов конфигурации с комментариями (например, tsconfig.json). Фактически распространённый псевдоним JSON5.
Trailing Comma / Висячая запятая
Лишняя запятая после последнего элемента объекта или массива. Допускается в JavaScript, но запрещена стандартом JSON — самая распространённая синтаксическая ошибка в выводе LLM и копировании из console.log().
Блок кода Markdown
Фрагмент кода, обёрнутый в три обратные кавычки (```). LLM часто автоматически оборачивают вывод JSON в ```json ... ```; прямая вставка в JSON.parse() приведёт к ошибке.
Tolerant Parser / Толерантный парсер
Парсер, способный пытаться восстановиться и продолжить разбор при обнаружении синтаксических ошибок. Ядро инструмента восстановления JSON, в отличие от строгого JSON.parse.
SyntaxError
Исключение синтаксической ошибки, выбрасываемое JavaScript. Любой строгий JSON-парсер выбрасывает его при получении ввода, не соответствующего RFC 8259.
Canonical JSON / Канонический JSON
JSON, заново сгенерированный через parse + stringify, со стабильным порядком ключей, без лишних пробелов и 100% совместимостью со стандартными парсерами. Конечный формат вывода инструмента восстановления JSON.

Распространённые типы ошибок JSON и примеры восстановления

Категория ошибкиДоПослеМетод восстановления
Висячая запятая{ "a": 1, }{ "a": 1 }Удалить запятую после последнего элемента
Одинарные кавычки{ 'a': 1 }{ "a": 1 }Заменить все одинарные кавычки на двойные
Ключи без кавычек{ a: 1 }{ "a": 1 }Добавить двойные кавычки вокруг ключа
Однострочные комментарии{ // комментарий "a": 1 }{ "a": 1 }Удалить строки с // комментариями
Блочные комментарии{ /* блок */ "a": 1 }{ "a": 1 }Удалить /* */ блочные комментарии
Обёртка Markdown```json { "a": 1 } ```{ "a": 1 }Удалить обёртки ```json и ```
Незакрытая строка{ "a": "hello }{ "a": "hello" }Добавить недостающую закрывающую кавычку строки
Пропущенная скобка{ "a": 1{ "a": 1 }Стековое сопоставление для добавления недостающих закрывающих скобок

Восстановление JSON vs Форматирование JSON vs Валидация JSON Schema

ИнструментЧто решаетТребования к вводуРежим отказа
Восстановление JSONПреобразование JSON с синтаксическими ошибками в допустимый JSONТолерантный, принимает нестандартный JSONОшибка при невозможности угадать структуру
Форматирование JSONПереформатирование допустимого JSONДолжен быть уже допустимым JSONSyntaxError выбрасывается напрямую
Сжатие JSONУдаление пробелов, уменьшение размераДолжен быть уже допустимым JSONSyntaxError выбрасывается напрямую
Валидация JSON SchemaПроверка типов/значений полей на соответствие бизнес-правиламДолжен быть уже допустимым JSONСписок нарушенных правил для каждого поля
JSON Merge / SortСлияние из нескольких источников / сортировка ключейДолжен быть уже допустимым JSONSyntaxError выбрасывается напрямую

Authoritative References