Перейти к содержимому

Преобразование объектов JSON5 в JSON — Numio

Преобразует литерал объекта JavaScript в строгий JSON с отступом в 2 пробела. Ключи без кавычек, одинарные кавычки, комментарии, висячие запятые, шестнадцатеричные числа и десятичные дроби с ведущей точкой принимаются и нормализуются.

Перенос объекта конфигурации или фикстуры из файла .js в JSON-файл, тело API-запроса или коллекцию Postman.

Принимает JSON и JSON5, включая комментарии, одинарные кавычки и завершающие запятые. Функции и выражения JavaScript не выполняются.

JS Object

JSON

Когда пригодится

  • Перенос объекта конфигурации или фикстуры из файла .js в JSON-файл, тело API-запроса или коллекцию Postman.
  • Очистка объекта, скопированного из DevTools браузера или документации, чтобы его принял строгий JSON-парсер.

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

  1. Вставьте литерал объекта (только данные, без объявления переменной и завершающей точки с запятой) в левый редактор или откройте файл в кодировке UTF-8 кнопкой загрузки файла.
  2. JSON появляется справа по мере ввода; если отображается ошибка вроде "invalid character", проверьте указанные строку и столбец.
  3. Проверьте преобразованные значения (шестнадцатеричные числа становятся десятичными, кавычки — двойными) и скопируйте результат.

Литерал объекта JavaScript

{
  // Mongoose-style field definition
  title: {
    type: 'String',
    required: true,
  },
  year: { type: 'Number', max: 0x7E6 },
  tags: ['draft', 'review',],
  ratio: .75,
  'content-type': "text/plain",
}

JSON

{
  "title": {
    "type": "String",
    "required": true
  },
  "year": {
    "type": "Number",
    "max": 2022
  },
  "tags": [
    "draft",
    "review"
  ],
  "ratio": 0.75,
  "content-type": "text/plain"
}

Подробности и ограничения

Ввод разбирается парсером JSON5 в браузере; код никогда не выполняется. Выражения, функции, new Date(), шаблонные строки, undefined и ссылки на переменные отклоняются как недопустимые символы.

NaN и Infinity отклоняются с ошибкой, так как JSON не может их представить.

Комментарии и исходное оформление ключей не сохраняются; в выводе всегда двойные кавычки и отступ в 2 пробела.

Целые числа больше 2^53 теряют точность (12345678901234567890 становится 12345678901234567000). Берите большие ID в кавычки как строки.

FAQ

Можно ли вставить const config = { ... };?

Нет. Принимается только значение. Удалите объявление и завершающую точку с запятой, иначе парсер сообщит о недопустимом символе в этой позиции.

Что происходит с дублирующимися ключами?

Побеждает последнее вхождение. {a: 1, a: 2} без предупреждения превращается в {"a": 2}, поэтому проверяйте объекты, объединённые вручную.

Принимаются ли массивы или отдельные значения на верхнем уровне?

Да. Подходит любое значение JSON5: например, [1, 2,] становится JSON-массивом из двух элементов, а 'hi' — "hi".

Спецификации и справка