JSON 转 ENV 环境变量

把嵌套的 JSON 拍平成 .env 里的 KEY=VALUE,也能把 .env 解析回 JSON 对照。

粘贴 JSON 后会自动转换0 字符

为什么要拍平

容器和十二要素应用习惯用环境变量做配置,而环境变量只能是一维的字符串键值对,没法直接放嵌套结构。所以要把 JSON 的层级压成一条条 KEY=VALUE:对象的每一层用分隔符接在上一层后面,数组用下标占一段。{"db": {"host": "localhost"}} 在双下划线约定下就是 DB__HOST=localhost。

分隔符没有统一标准,取决于接收方怎么解析。Spring Boot 的宽松绑定默认支持 DB__HOST 这种双下划线写法并映射回 db.host;一些 Python 配置库用点号 DB.HOST;短横线则适合键名里已经有下划线、需要避开冲突的场景。选不到合适的就用「自定义」填一个自己的约定。

引号和数组

当值里包含空格、#、= 或换行时,不加引号会被 dotenv 解析错位。本工具在勾选「给值加双引号」后会把值整体包进双引号,并把值里的双引号写成 \"、换行写成 \n,保证一行仍然是一个键值对,且能被常见的 dotenv 库正确还原。

数组按下标展开,["search", "export"] 变成 FEATURES__0=search 和 FEATURES__1=export。反向解析时,如果某一层的键恰好是连续的 0、1、2…,就还原成 JSON 数组,否则保留成普通对象。空对象和空数组会写成一个 {} 或 [] 占位值,免得整段信息消失。

要注意 .env 里存的都是字符串,没有类型信息。JSON 里的数字 8080 和布尔 false 转过去是 8080、false,再解析回来会变成字符串 "8080"、"false",这也是「ENV 转 JSON」只适合对照结构、不适合当类型转换的原因。密码、令牌这类敏感值不要贴到任何在线服务,本工具虽然只在浏览器本地计算,但贴进输入框的内容仍会留在你自己的剪贴板历史里。