В этой статье
Что такое JSON5?
JSON5 — это надмножество JSON, добавляющее возможности, вдохновлённые синтаксисом ECMAScript 5.1. Он был создан, чтобы сделать JSON более удобным для конфигурационных файлов и случаев, когда люди пишут и читают JSON вручную. Каждый валидный документ JSON также является валидным JSON5, но JSON5 добавляет комментарии, завершающие запятые, ключи без кавычек и другие удобства.
Спецификация JSON5 была завершена в 2018 году и широко принята в инструментарии JavaScript. Инструменты сборки, такие как Babel, Next.js и Webpack, принимают конфигурационные файлы JSON5. Конвертация JSON5 в стандартный JSON необходима при взаимодействии с системами, понимающими только строгий JSON, такими как API, базы данных и большинство языков программирования.
Возможности JSON5
JSON5 добавляет несколько синтаксических расширений, упрощающих написание и поддержку конфигурационных файлов.
- Комментарии — разрешены однострочные (//) и многострочные (/* */) комментарии, делая файлы конфигурации самодокументируемыми
- Завершающие запятые — массивы и объекты могут иметь запятую после последнего элемента, уменьшая шум в диффах
- Ключи без кавычек — ключи объектов, являющиеся валидными идентификаторами ECMAScript, не нуждаются в кавычках
- Шестнадцатеричные числа — числовые значения можно записывать как 0xFF, полезно для цветовых кодов в конфигурации
- Многострочные строки — значения строк могут охватывать несколько строк с помощью продолжения обратным слешем
- Специальные числовые значения — Infinity, -Infinity и NaN являются валидными числовыми литералами в JSON5
Попробуйте бесплатно — без регистрации
Конвертировать JSON5 в JSON →Где используется JSON5
JSON5 используется преимущественно в инструментарии экосистемы JavaScript, где конфигурационные файлы пишутся и поддерживаются разработчиками.
- Babel — файлы .babelrc и babel.config.json5 поддерживают синтаксис JSON5 для конфигурации сборки с комментариями
- TypeScript — tsconfig.json поддерживает возможности JSON5, такие как комментарии и завершающие запятые (технически JSONC)
- Chrome DevTools — профили ограничения сети и другие настройки используют формат JSON5
- Next.js — конфигурационные файлы принимают JSON5 для удобной настройки с встроенной документацией
Часто задаваемые вопросы
Могут ли браузеры парсить JSON5 нативно?
Нет. Браузеры поддерживают только стандартный JSON через JSON.parse(). Для парсинга JSON5 в браузере или приложении Node.js нужен npm-пакет json5. Инструменты сборки, поддерживающие JSON5, выполняют парсинг внутренне во время этапа сборки.
В чём разница между JSON5 и JSONC?
JSONC (JSON с комментариями) добавляет только поддержку комментариев к JSON. JSON5 — это более широкое надмножество, добавляющее комментарии, завершающие запятые, ключи без кавычек, шестнадцатеричные числа, многострочные строки и специальные числовые значения. tsconfig.json TypeScript и settings.json VS Code используют JSONC, тогда как Babel и другие инструменты используют полный JSON5.
JSON5 — это то же, что YAML?
Нет. JSON5 остаётся близким к синтаксису JSON с небольшими эргономическими дополнениями. YAML — это совершенно другой формат со структурой на основе пробелов, якорями и множеством других возможностей. JSON5 проще конвертировать в JSON, поскольку он является строгим надмножеством. Конвертация YAML в JSON может быть с потерями, поскольку YAML поддерживает типы данных, которых нет в JSON.