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

Преобразуйте объект JSON в формат .env KEY=VALUE с разворачиванием вложенных объектов и восстановлением комментариев. Работает полностью в браузере.

Превратите JSON-объект в строки .env, которые dotenv и похожие загрузчики читают при старте приложения. Вложенные объекты раскладываются в имена через точку, например db.host, массив записывается одной строкой JSON-текста, а true, false и числа — просто текстом. Карта $comments, полученная из Env в JSON, снова становится строками # над каждой переменной. Всё выполняется в браузере, так что секреты из JSON не покидают ваш компьютер.

JSON Ввод

Загрузить

Дополнительные параметрыКонвертироватьОчистить

.env Вывод

Результат появится здесь...

КопироватьСкачать

Результат появится здесь...

О конвертере JSON в Env

Переменные окружения хранят только плоские строки, поэтому превращение JSON в .env — по сути вопрос именования. При включённом разворачивании каждый вложенный путь склеивается через разделитель: { "app": { "cache": { "ttl": 60 } } } даёт app.cache.ttl=60, причём регистр ключей остаётся ровно таким, как в JSON, — в верхний регистр ничего не переводится. Командная оболочка не принимает имя с точкой как переменную, поэтому если файл будет подключаться через source в shell-скрипте, поменяйте разделитель на подчёркивание (app_cache_ttl). Если разворачивание выключить, вложенные объекты не раскрываются: каждый из них записывается после знака равенства одной строкой JSON-текста.

Вам также может понадобиться

Env в JSON

Конвертируйте .env файлы в JSON с автоопределением типов и вложенными ключами.

Открыть инструмент

JSON в Properties

Конвертируйте объекты JSON в формат Java .properties с разворачиванием ключей с точками.

Открыть инструмент

JSON Форматер и Валидатор

Форматируйте, проверяйте и визуализируйте данные JSON.

Открыть инструмент

YAML в JSON

Преобразовать YAML в JSON или JSON в YAML.

Открыть инструмент

Как конвертировать JSON в .env

  1. 1

    Начните с JSON-объекта

    В поле ввода нужен именно объект — не массив и не одиночное значение. Иконка колбы подставит небольшой плоский пример с API-ключом и портом.

  2. 2

    Решите, как строить имена переменных

    В Advanced options оставьте точку для имён в стиле dotenv (db.host), выберите подчёркивание для имён, с которыми справится shell (db_host), или отключите разворачивание, чтобы вложенные объекты остались JSON-текстом.

  3. 3

    Запустите конвертацию

    Каждое конечное значение превращается в одну строку NAME=value в исходном порядке ключей, а записи $comments ставятся строками # прямо над той переменной, которую описывают. Значения с переводом строки, пробелами в начале или конце либо символом # заключаются в кавычки (перевод строки записывается как \n), поэтому при обратном преобразовании в JSON они читаются без изменений.

  4. 4

    Сохраните .env

    Скопируйте текст или скачайте файл .env; если в нём есть учётные данные, не добавляйте его в систему контроля версий. Иконка смены направления разберёт файл обратно в JSON.

Источники

  • The Twelve-Factor App — Config

    Методология хранения конфигурации в переменных окружения, которой следует формат вывода этого конвертера.

  • dotenv (motdotla) — README

    Эталонная реализация синтаксиса .env файлов, описывающая, как принято записывать пары KEY=VALUE и комментарии.

  • RFC 8259 — The JSON Data Interchange Format

    Спецификация IETF для формата 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 или выберите другой разделитель, если символ появился из-за него.