Преобразование объектов JSON5 в JSON — Numio
Преобразует литерал объекта JavaScript в строгий JSON с отступом в 2 пробела. Ключи без кавычек, одинарные кавычки, комментарии, висячие запятые, шестнадцатеричные числа и десятичные дроби с ведущей точкой принимаются и нормализуются.
Перенос объекта конфигурации или фикстуры из файла .js в JSON-файл, тело API-запроса или коллекцию Postman.
Принимает JSON и JSON5, включая комментарии, одинарные кавычки и завершающие запятые. Функции и выражения JavaScript не выполняются.
JS Object
JSON
Когда пригодится
- Перенос объекта конфигурации или фикстуры из файла .js в JSON-файл, тело API-запроса или коллекцию Postman.
- Очистка объекта, скопированного из DevTools браузера или документации, чтобы его принял строгий JSON-парсер.
Как пользоваться
- Вставьте литерал объекта (только данные, без объявления переменной и завершающей точки с запятой) в левый редактор или откройте файл в кодировке UTF-8 кнопкой загрузки файла.
- JSON появляется справа по мере ввода; если отображается ошибка вроде "invalid character", проверьте указанные строку и столбец.
- Проверьте преобразованные значения (шестнадцатеричные числа становятся десятичными, кавычки — двойными) и скопируйте результат.
Литерал объекта 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".