Исправление JSON

Вставьте данные в формате JSON-like — объект из кода JavaScript, ответ из консоли или конфигурацию с комментариями — и получите валидный JSON. Инструмент заменяет одинарные кавычки, убирает лишние запятые и комментарии, берёт ключи в кавычки и показывает список того, что исправил.

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

Вставьте текст в поле «Исходный текст» или откройте файл. Результат обновляется сам во время ввода; переключатель «С отступами | В одну строку» меняет вид результата. Под статусом перечислены распознанные исправления. В блоке «Что изменилось» удалённые фрагменты зачёркнуты, добавленные подчёркнуты: можно проверить кавычки, запятые и замены на null. Сравнение показывает исправления до форматирования и не меняется при переключении отступов. Для больших документов подсветка упрощается или отключается с пояснением; исправленный JSON остаётся доступен целиком. Проверьте результат, прежде чем использовать его. Если текст исправить нельзя, место ошибки подчёркивается в поле.

Код обрабатывается в браузере, не отправляется на сервер и не сохраняется после закрытия страницы. Размер — до 2 МБ в UTF-8.

Длительную обработку можно остановить кнопкой «Отменить обработку». Изменение ввода прерывает предыдущий расчёт; для повторного запуска измените данные или нажмите кнопку примера. Если документ слишком сложен, появится сообщение с предложением разделить его на части.

Для вашего удобства рекомендую использовать полноэкранный режим.

Результат

Исправляем…

Исходный текст

Файл не выбран
UTF-8, до 2 МБ. Файл можно перетащить на поле. Файл обрабатывается только в вашем браузере.
// Ответ API, скопированный из консоли
{
  name: 'basicweb',
  "active": True,
  "tags": ['html', 'css',],
  "author": { "city": "Москва", "site": None },
  /* лишняя запятая в конце */
  "version": 2,
}

Исправленный JSON

Для исправления включите JavaScript. Пример: {name: 'basicweb', tags: ['html',],} станет {"name": "basicweb", "tags": ["html"]}.

Что исправляется

  • Одинарные кавычки и типографские «“ ”» вокруг строк и ключей заменяются на двойные.
  • Ключи без кавычек, как в объектах JavaScript, берутся в кавычки: name: 1 становится "name": 1.
  • Удаляются лишние запятые перед } и ] и комментарии // и /* */.
  • Значения Python и JavaScript заменяются на значения JSON: True → true, None и undefined → null; NaN и Infinity становятся строками, потому что в JSON таких чисел нет.
  • Дописываются пропущенные запятые и двоеточия, закрываются оборванные строки и скобки, снимается обёртка JSONP вида callback(…).

Исходный текст и результат:

JavaScript
{name: 'basicweb', tags: ['html', 'css',], active: True, // комментарий
}
JSON
{
  "name": "basicweb",
  "tags": [
    "html",
    "css"
  ],
  "active": true
}

Когда нужна осторожность

Исправление восстанавливает синтаксис, но не смысл. Пропущенное значение, например "a": }, становится null — инструмент сообщает об этом в списке, но не знает, каким значение должно быть. Строки и числа внутри данных не меняются: большие числа вроде 9007199254740993 сохраняются без округления.

Обычный текст и несколько значений подряд не превращаются в JSON молча: ожидается объект { … } или массив [ … ], а лишний текст после закрывающей скобки считается ошибкой.

Вопросы и ответы

Почему JSON с одинарными кавычками считается неправильным?

Стандарт JSON допускает только двойные кавычки, не разрешает комментарии и запятую после последнего элемента. Поэтому JSON.parse() и большинство программ отклоняют такие данные, хотя для JavaScript это обычный объект.

Можно ли доверять исправленному JSON?

Синтаксис результата всегда корректен, но смысл стоит проверить: особенно значения, заменённые на null, и строки "NaN" и "Infinity". Список под статусом показывает распознанные типовые исправления и может быть неполным: например, добавленная запятая не всегда перечисляется рядом с исправленными кавычками. Сравните исходный текст и результат целиком.

Безопасно ли вставлять рабочие данные?

Да. Исправление выполняется в вашем браузере, данные не отправляются на сервер и не сохраняются после закрытия вкладки.

Изучить JSON

Правила записи JSON и работа с ним в JavaScript описаны в статьях об объекте JSON и методе JSON.parse(). Исправленный JSON можно сравнить с другой версией в инструменте «Сравнение JSON».