Исправление JSON
Вставьте данные в формате JSON-like — объект из кода JavaScript, ответ из консоли или конфигурацию с комментариями — и получите валидный JSON. Инструмент заменяет одинарные кавычки, убирает лишние запятые и комментарии, берёт ключи в кавычки и показывает список того, что исправил.
Как пользоваться
Вставьте текст в поле «Исходный текст» или откройте файл. Результат обновляется сам во время ввода; переключатель «С отступами | В одну строку» меняет вид результата. Под статусом перечислены распознанные исправления. В блоке «Что изменилось» удалённые фрагменты зачёркнуты, добавленные подчёркнуты: можно проверить кавычки, запятые и замены на null. Сравнение показывает исправления до форматирования и не меняется при переключении отступов. Для больших документов подсветка упрощается или отключается с пояснением; исправленный JSON остаётся доступен целиком. Проверьте результат, прежде чем использовать его. Если текст исправить нельзя, место ошибки подчёркивается в поле.
Код обрабатывается в браузере, не отправляется на сервер и не сохраняется после закрытия страницы. Размер — до 2 МБ в UTF-8.
Длительную обработку можно остановить кнопкой «Отменить обработку». Изменение ввода прерывает предыдущий расчёт; для повторного запуска измените данные или нажмите кнопку примера. Если документ слишком сложен, появится сообщение с предложением разделить его на части.
Для вашего удобства рекомендую использовать полноэкранный режим.
Исходный текст
// Ответ 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(…).
Исходный текст и результат:
{name: 'basicweb', tags: ['html', 'css',], active: True, // комментарий
}{
"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».