Конвертер JSON в Env
Преобразуйте объект JSON в формат .env KEY=VALUE с разворачиванием вложенных объектов и восстановлением комментариев. Работает полностью в браузере.
Превратите JSON-объект в строки .env, которые dotenv и похожие загрузчики читают при старте приложения. Вложенные объекты раскладываются в имена через точку, например db.host, массив записывается одной строкой JSON-текста, а true, false и числа — просто текстом. Карта $comments, полученная из Env в JSON, снова становится строками # над каждой переменной. Всё выполняется в браузере, так что секреты из JSON не покидают ваш компьютер.
О конвертере JSON в Env
Переменные окружения хранят только плоские строки, поэтому превращение JSON в .env — по сути вопрос именования. При включённом разворачивании каждый вложенный путь склеивается через разделитель: { "app": { "cache": { "ttl": 60 } } } даёт app.cache.ttl=60, причём регистр ключей остаётся ровно таким, как в JSON, — в верхний регистр ничего не переводится. Командная оболочка не принимает имя с точкой как переменную, поэтому если файл будет подключаться через source в shell-скрипте, поменяйте разделитель на подчёркивание (app_cache_ttl). Если разворачивание выключить, вложенные объекты не раскрываются: каждый из них записывается после знака равенства одной строкой JSON-текста.
Вам также может понадобиться
Как конвертировать JSON в .env
- 1
Начните с JSON-объекта
В поле ввода нужен именно объект — не массив и не одиночное значение. Иконка колбы подставит небольшой плоский пример с API-ключом и портом.
- 2
Решите, как строить имена переменных
В Advanced options оставьте точку для имён в стиле dotenv (db.host), выберите подчёркивание для имён, с которыми справится shell (db_host), или отключите разворачивание, чтобы вложенные объекты остались JSON-текстом.
- 3
Запустите конвертацию
Каждое конечное значение превращается в одну строку NAME=value в исходном порядке ключей, а записи $comments ставятся строками # прямо над той переменной, которую описывают. Значения с переводом строки, пробелами в начале или конце либо символом # заключаются в кавычки (перевод строки записывается как \n), поэтому при обратном преобразовании в JSON они читаются без изменений.
- 4
Сохраните .env
Скопируйте текст или скачайте файл .env; если в нём есть учётные данные, не добавляйте его в систему контроля версий. Иконка смены направления разберёт файл обратно в JSON.
Источники
- The Twelve-Factor App — Config
Методология хранения конфигурации в переменных окружения, которой следует формат вывода этого конвертера.
- dotenv (motdotla) — README
Эталонная реализация синтаксиса .env файлов, описывающая, как принято записывать пары KEY=VALUE и комментарии.
- RFC 8259 — The JSON Data Interchange Format
Спецификация IETF для формата JSON, который разбирает этот инструмент.
Связанные инструменты
Env в JSON
Конвертируйте .env файл в JSON с автоопределением типов, вложенными ключами и сохранением комментариев.
JSON в Properties
Конвертируйте объект JSON в формат Java .properties — аналогичный сценарий для файлов properties.
JSON Formatter
Вставьте необработанный JSON и мгновенно получите отформатированный, подсвеченный и провалидированный результат перед конвертацией.
YAML в JSON
Конвертируйте между форматами конфигурации YAML и JSON.
JSON в Env — часто задаваемые вопросы
- Переводятся ли имена переменных в верхний регистр?
- Нет. Ключи сохраняют регистр из вашего JSON: { "db": { "host": "x" } } превращается в db.host=x. В Linux и macOS имена переменных окружения чувствительны к регистру, так что пишите ключи JSON именно в том регистре, в котором их читает приложение.
- Можно ли подключить полученный .env через source в shell?
- Только если все имена — допустимые идентификаторы shell: буквы, цифры и подчёркивания, причём первым символом не может быть цифра. Имена с точкой вроде db.host без проблем загружает dotenv для Node.js, но оболочка не воспримет такие строки как присваивания, поэтому для файлов под source выбирайте разделитель «_».
- Что происходит с массивами и вложенными объектами?
- При включённом разворачивании вложенные объекты становятся отдельными переменными с точкой в имени, а массив записывается одной строкой JSON-текста, например tags=["a","b"]. Если разворачивание выключено, вложенные объекты тоже сохраняются целиком как JSON-текст.
- В каком виде пишутся true, false и числа?
- Обычным текстом — true, false или само число, ведь у .env нет типов. Env в JSON при включённом определении типов прочитает их обратно как настоящие булевы значения и числа.
- Появятся ли в .env комментарии?
- Да, если в JSON есть объект $comments — например, тот, что создаёт Env в JSON: каждая его запись выводится строкой # над соответствующей переменной. Чтобы получить голые строки NAME=value, выберите для Comments значение «Ignore» в Advanced options.
- Отправляется ли мой JSON куда-нибудь при конвертации?
- Нет, конвертация идёт локально в браузере. Это существенно: в .env обычно лежат API-ключи и пароли к базам данных.
- Почему появляется ошибка о недопустимом имени переменной?
- Имя, которое пустое или содержит пробелы, =, :, #, кавычки или обратную косую черту, невозможно снова прочитать из файла .env, поэтому преобразование останавливается и показывает этот ключ, вместо того чтобы записать испорченную строку. Переименуйте ключ в JSON или выберите другой разделитель, если символ появился из-за него.