Что это
JSON5 — расширение JSON для файлов, которые пишут вручную. Он допускает комментарии, завершающие запятые, ключи объектов без кавычек, строки в одинарных кавычках и несколько более удобных форм записи чисел. Babel, некоторые сборщики и многие приложения принимают JSON5 или JSONC (JSON с комментариями, который используют tsconfig.json и настройки VS Code) в качестве формата конфигурации.
Однако многие парсеры, API и языки программирования принимают только строгий JSON. Этот конвертер читает JSON5 или JSONC и выводит стандартный JSON, который поймёт любой парсер: все ключи в двойных кавычках, без комментариев и завершающих запятых, числа в десятичной записи.
Как пользоваться
- Вставьте JSON5 или JSONC, загрузите файл
.json5,.jsoncили.jsonлибо нажмите Пример. - Выберите Отступ: 2 или 4 пробела либо Компактно, чтобы получить одну строку.
- Выберите, что делать с
InfinityиNaN: заменить наnull, заменить строками или показать ошибку. - Скопируйте или скачайте JSON.
Если во входных данных есть синтаксическая ошибка, в сообщении указаны строка и столбец, и к ним можно сразу перейти. Обычный JSON тоже является корректным JSON5, так что инструментом можно проверить, разбирается ли файл, и заодно переформатировать его.
Пример
Такая конфигурация в JSON5:
// Server settings
{
host: 'localhost',
port: 0x1F90, // 8080
ratio: .5,
tags: ['api', 'v2',],
}
превращается в такой строгий JSON:
{
"host": "localhost",
"port": 8080,
"ratio": 0.5,
"tags": [
"api",
"v2"
]
}
Комментарии удалены, ключи и строки взяты в двойные кавычки, шестнадцатеричное число и дробь без целой части записаны в десятичном виде, завершающие запятые исчезли.
Что преобразуется
- Удаляются строчные комментарии
//и блочные/* */. - Ключи без кавычек, такие как
port, и строки в одинарных кавычках, такие как'localhost', получают двойные кавычки. - Строки, продолженные обратной косой чертой в конце строки, объединяются в одну.
- Шестнадцатеричные числа (
0xFF), десятичная точка в начале или в конце (.5,5.) и явный знак плюс (+3) превращаются в обычные десятичные числа. - Завершающие запятые в объектах и массивах удаляются.
- Если ключ встречается дважды, побеждает последнее значение, как в JavaScript.
Частые вопросы
› Чем JSON5 отличается от JSONC?
JSONC — это JSON с комментариями (а в VS Code ещё и с завершающими запятыми). JSON5 идёт дальше: ключи без кавычек, строки в одинарных кавычках, многострочные строки, шестнадцатеричные числа, десятичная точка в начале или в конце числа, Infinity и NaN. JSON5 — надмножество JSONC, поэтому инструмент читает оба формата.
› Сохраняются ли комментарии?
Нет. В стандартном JSON нет синтаксиса комментариев, поэтому они удаляются. Если они нужны, храните исходный файл в JSON5 и генерируйте JSON из него.
› Что происходит с Infinity и NaN?
Строгий JSON не может их представить. По умолчанию они превращаются в null, как в JSON.stringify в JavaScript. Можно также превратить их в строки или показать ошибку с точным путём к значению.
› Мои данные куда-то отправляются?
Нет. Разбор и преобразование выполняются полностью в браузере, поэтому конфигурационные файлы с секретами не покидают ваше устройство.