Форматирование и валидация JSON

RSS

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

Работает на 100% в вашем браузере. Ничего из вставленного не загружается на сервер и не сохраняется.
Исходный JSON
Результат
Готово.

Как пользоваться форматировщиком JSON

  1. Вставьте JSON в поле ввода или введите его вручную.
  2. Выберите стиль отступов: 2 пробела, 4 пробела или Табуляция.
  3. Нажмите кнопку Форматировать, чтобы получить красиво оформленный JSON, или Минифицировать, чтобы убрать все необязательные пробелы и переносы.
  4. Если JSON некорректен, валидатор покажет сообщение об ошибке и номер строки и столбца, на которых разбор прервался.
  5. При желании включите параметр Сортировать ключи, чтобы упорядочить ключи объектов по алфавиту, или преобразуйте результат в YAML или CSV.
  6. Скопируйте результат и вставьте его туда, где он нужен.

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

Что такое JSON и зачем его форматировать?

JSON (JavaScript Object Notation) — лёгкий текстовый формат данных, стандартизированный в RFC 8259 и ECMA-404. Он состоит всего из шести видов значений: объектов ({}), массивов ([]), строк, чисел, логических значений true и false и null. Именно благодаря простоте его используют почти все REST API, многие файлы конфигурации и бесчисленные конвейеры логов.

Машинам пробелы безразличны, поэтому JSON, передаваемый по сети, часто минифицируют в одну строку. Это эффективно, но человеку такое прочитать почти невозможно. Форматирование добавляет переносы строк и единообразные отступы, чтобы вы сразу видели вложенность, замечали пропущенное поле и могли сравнить два документа в diff. Минификация делает обратное и полезна, когда нужно встроить JSON в запрос или уменьшить размер передаваемых данных.

Частые ошибки в JSON и как их исправить

JSON строже, чем объектные литералы JavaScript. Вот ошибки, которые валидатор находит чаще всего:

ПроблемаНеправильноПравильно
Завершающая запятая[1, 2, 3,][1, 2, 3]
Одинарные кавычки{'name': 'Ada'}{"name": "Ada"}
Ключ без кавычек{name: "Ada"}{"name": "Ada"}
Комментарии// note или /* note */Удалите их или используйте поле "_comment"
Значения, которых нет в JSONundefined, NaN, Infinitynull или строка
Ведущие нули{"id": 007}{"id": 7} или "007"

Типичный сломанный фрагмент, скопированный из кода JavaScript, выглядит так:

{
  name: 'Ada Lovelace',
  born: 1815,   // year
  languages: ['English', 'French',],
}

В исправленном JSON каждый ключ и каждая строка заключены в двойные кавычки, комментарий удалён, а обе завершающие запятые убраны:

{
  "name": "Ada Lovelace",
  "born": 1815,
  "languages": ["English", "French"]
}

Другие частые причины — неэкранированные двойные кавычки или настоящие переносы строк внутри строк (используйте \" и \n), а также лишний символ после закрывающей скобки. Если указанная позиция кажется неверной, проверьте строку чуть выше: пропущенную запятую парсер обычно обнаруживает, только когда доходит до следующего значения.

Советы и рекомендации

  • Выберите один стиль отступов и придерживайтесь его. Два пробела — самое распространённое соглашение в проектах на JavaScript, четыре пробела часто встречаются в инструментах Python. Единообразие важнее самого выбора.
  • Сортируйте ключи перед сравнением. Объекты JSON неупорядочены, поэтому два равнозначных документа могут выглядеть по-разному. Сортировка ключей делает diff в системе контроля версий и сравнения намного чище.
  • Следите за очень большими числами. JavaScript хранит числа как 64-битные числа с плавающей запятой, поэтому целые числа больше 9 007 199 254 740 991 (253 − 1) при разборе в браузере могут терять точность. Передавайте большие идентификаторы строками.
  • Используйте UTF-8. RFC 8259 требует UTF-8 для JSON, которым обмениваются системы.
  • Преобразуйте, когда это удобно. CSV подходит для плоского массива объектов, который нужно открыть в электронной таблице; YAML удобнее править вручную. Для преобразования в обе стороны попробуйте конвертер JSON ↔ YAML или конвертер CSV ↔ JSON.
Совет: проверяете токен? Полезная нагрузка JWT — это JSON в кодировке Base64url, и декодер JWT отформатирует её за вас.

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

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

Нет. Ни RFC 8259, ни ECMA-404 не допускают комментариев. Некоторые инструменты принимают расширенные форматы, например JSONC или JSON5, но стандартный парсер их отклонит. Удалите комментарии перед проверкой или перенесите заметки в обычное поле.

Почему мой JSON некорректен, хотя в JavaScript он работает?

Объектные литералы JavaScript допускают одинарные кавычки, ключи без кавычек, завершающие запятые, комментарии и значения вроде undefined. JSON не допускает ничего из этого. Чтобы получить корректный JSON, используйте в коде JSON.stringify(), а не пишите его вручную.

Меняет ли форматирование мои данные?

Форматирование и минификация меняют только пробелы между токенами; ключи, значения и порядок элементов массивов остаются прежними. Сортировка ключей меняет порядок членов объекта, но это не меняет смысла, потому что объекты JSON неупорядочены.

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

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

Можно ли преобразовать вложенный JSON в CSV?

CSV — это плоская таблица, поэтому он лучше всего подходит для массива объектов с одинаковыми ключами. У вложенных объектов и массивов нет прямого аналога в CSV, и обычно их разворачивают в плоскую структуру или сериализуют в одну ячейку.

Обновлено

Скопировано в буфер обмена