DevToolPal
RU

Конвертер JSON5 в JSON

Преобразует JSON5 или JSONC (комментарии, завершающие запятые, ключи без кавычек, одинарные кавычки) в строгий стандартный JSON.

Работает локально, без загрузки на сервер

Параметры

Отступ

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что это

JSON5 — расширение JSON для файлов, которые пишут вручную. Он допускает комментарии, завершающие запятые, ключи объектов без кавычек, строки в одинарных кавычках и несколько более удобных форм записи чисел. Babel, некоторые сборщики и многие приложения принимают JSON5 или JSONC (JSON с комментариями, который используют tsconfig.json и настройки VS Code) в качестве формата конфигурации.

Однако многие парсеры, API и языки программирования принимают только строгий JSON. Этот конвертер читает JSON5 или JSONC и выводит стандартный JSON, который поймёт любой парсер: все ключи в двойных кавычках, без комментариев и завершающих запятых, числа в десятичной записи.

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

  1. Вставьте JSON5 или JSONC, загрузите файл .json5, .jsonc или .json либо нажмите Пример.
  2. Выберите Отступ: 2 или 4 пробела либо Компактно, чтобы получить одну строку.
  3. Выберите, что делать с Infinity и NaN: заменить на null, заменить строками или показать ошибку.
  4. Скопируйте или скачайте 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. Можно также превратить их в строки или показать ошибку с точным путём к значению.

› Мои данные куда-то отправляются?

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