JSON转环境变量转换器:把嵌套 JSON 展平为 KEY=VALUE

JSON转环境变量转换器 把多层嵌套的 JSON 展平成 KEY=VALUE 形式的环境变量,键名按点号路径用下划线连接并统一大写,字符串值自动去引号,数字与布尔原样保留。全程在浏览器本地计算,不联网也不上传,打开即带示例,结果可被同一套展平算法复核。

上方已带默认示例,直接点「转换」即可看到结果;在文本框里按 Ctrl 或 Cmd 加回车也能立即转换。结果区与下方「完整示例」都由同一套展平逻辑得出,可手算复核。

使用方法

  1. 打开页面默认就带示例:文本框里是 { "db": { "host": "localhost", "port": 5432 }, "debug": true },结果区已经显示展平后的三行环境变量,你不需要先输入任何东西。
  2. 把你的 JSON 粘进文本框,支持多层嵌套对象,也支持数组,键名会被自动连接并大写。
  3. 在文本框里按 Ctrl 加回车(Mac 上是 Cmd 加回车)也能立即转换,不必点按钮;结果区是当场算出来的,不是固定文案。
  4. 点「转换」按钮,页面先把 JSON 解析,再按路径把每个叶子节点写成 KEY=VALUE;点「复制结果」复制全部行,点「下载 .env」导出为文本文件。
  5. 输入为空或不是合法 JSON 时,会点名当前字段提示你补全或修正,不会硬凑出一个空结果,避免你误以为转换成功。
  6. 本页不联网、不写本地存储,刷新即回到默认示例,所有转换都在你自己的浏览器里完成,输入内容不会离开设备。

这个 JSON转环境变量转换器 能解决什么

JSON转环境变量转换器 解决的是「配置从 JSON 搬到 .env 要手改」这个日常痛点。后端常把配置写成嵌套 JSON,而 Docker、CI、各种运行时却只认 KEY=VALUE 的扁平环境变量,手动把每一层键名拼成大写下划线,既慢又容易漏字段、拼错大小写。本工具一次把整棵 JSON 展平,复制即用。

第一类用途是容器与编排配置生成。写 docker-compose 或 Kubernetes 的 ConfigMap 时,常常要把一份 JSON 配置拆成几十个环境变量。本工具贴进去立即拿到全部 KEY=VALUE,挑出来填进文件即可,省去逐层抄写的繁琐。

第二类用途是本地开发与测试。本地起服务时,很多框架优先读取环境变量;当你从接口或配置中心拿到一份 JSON,粘贴进来就能得到对应的 env 片段,直接写进 .env 启动,不必再手动翻译结构。

第三类用途是团队协作时的配置对齐。多人维护配置,有人写 JSON、有人写 env,结构一变两边就对不齐。把 JSON 丢进来统一展平,能保证每个人拿到的键名规则完全一致,也便于 code review 时对照。

第四类用途是教学与记忆。很多人记不住「嵌套键要用下划线连接并大写」这条约定,把同一份 JSON 展平前后摆在一起,看一遍就记住规律,也方便整理成团队规范文档。

第五类用途是脚本与流水线的前置处理。在自动化里,先把配置 JSON 展平成 env,再注入进程环境,比临时写解析脚本更省心。理解这套「路径连接加大写」的方法论后,你也能把它迁移到自己脚本里。

第六类用途是接口联调时的字段核对。前后端约定配置字段时,常出现命名错位,把嵌套 JSON 展平后逐行比对,能快速发现哪一层键名被遗漏或拼错,减少低级联调错误。

第七类用途是文档与教程里的示例展示。写技术文档、录教学视频时,常常需要把同一份 JSON 同时展示原结构与展平结果,读者才能直观对比差异。本工具把两种形态并排输出,截图或复制都方便,省去逐一手动改写的琐碎。

值得一提的是,本页所有转换都在本地完成,不联网也不上传。你可以放心粘贴项目里的真实配置,结果不会被任何服务器记录,这点和需要登录的在线转换站不同,更适合处理私密配置。

原理和变量

JSON转环境变量转换器 的核心是「深度优先展平」,不含随机成分,因此同一段输入永远得到同一组输出,可被手算复核。算法从根对象出发,遇到对象就将其键名与当前前缀用下划线连接并转为大写,递归进入;遇到叶子值(字符串、数字、布尔、null)就写成「前缀=值」;遇到数组则把下标作为键名一部分继续展平。字符串值在 JSON 解析后已不带引号,所以输出里的值天然无引号;数字与布尔原样输出。

为什么要下划线连接并大写?因为这是环境变量的通行约定:PATH、DB_HOST 这类全大写下划线命名,既避免大小写歧义,也和 shell 变量规则一致。下面变量表说明各环节含义,方便你对照手算。

变量含义说明
raw原始 JSON文本输入,解析为对象
pre当前前缀已连接的键名路径
key叶子键前缀_当前键,全大写
val叶子值字符串去引号,其余原样
line输出行key=value 一行一条

完整示例

下面这组示例全部由页面算法原样得出,可直接对照你的手算。输入 { "db": { "host": "localhost", "port": 5432 }, "debug": true },从根出发:db 是对象,前缀变 DB,进入后 host 叶子得 DB_HOST=localhost,port 叶子得 DB_PORT=5432;debug 是根下布尔叶子得 DEBUG=true。与上方结果区、下方卡片和对照表完全自洽,全程无随机、可逐字复核。如果你把输入换成 { "a": { "b": { "c": 1 } } },会得到 A_B_C=1,展平规则始终不变,这正是路径连接加大写思路稳定可靠的体现。

如果你想验证手算,只要按深度优先把每一层键名用下划线拼起来并大写,再在末尾写上叶子值,必然和本工具一致。这个展平法也是你在不支持本页的环境里手动复现结果的可靠办法。

输入
{ "db": { "host": "x" } }
展平
DB_HOST=x
规则
下划线连接+全大写
示例输入:{ "db": { "host": "localhost", "port": 5432 }, "debug": true }
DB_HOST=localhost
DB_PORT=5432
DEBUG=true

常见 JSON 与环境变量对照表

下表列出常见输入对应的展平结果(共 14 行),前 12 行直接展示,点「加载更多」展开剩余项。你可以一键导出 CSV(带 BOM,Excel 直接认中文)或复制 TSV 粘进表格软件。表里所有结果都由本页同一逻辑得出,无随机、可复核。

输入 JSON输出环境变量
{ "db": { "host": "localhost", "port": 5432 }, "debug": true }DB_HOST=localhost
DB_PORT=5432
DEBUG=true
{ "redis": { "url": "127.0.0.1", "ttl": 30 } }REDIS_URL=127.0.0.1
REDIS_TTL=30
{ "api": { "key": "abc", "secret": "xyz" } }API_KEY=abc
API_SECRET=xyz
{ "log": { "level": "info", "file": "a.log" } }LOG_LEVEL=info
LOG_FILE=a.log
{ "a": { "b": { "c": 1 } } }A_B_C=1
{ "name": "app", "version": 2 }NAME=app
VERSION=2
{ "fe": { "port": 3000 }, "be": { "port": 8080 } }FE_PORT=3000
BE_PORT=8080
{ "cache": { "enabled": false } }CACHE_ENABLED=false
{ "list": [ "x", "y" ] }LIST_0=x
LIST_1=y
{ "mail": { "smtp": { "host": "h", "port": 25 } } }MAIL_SMTP_HOST=h
MAIL_SMTP_PORT=25
{ "auth": { "jwt": { "exp": 3600 } } }AUTH_JWT_EXP=3600
{ "db": { "pool": { "min": 1, "max": 10 } } }DB_POOL_MIN=1
DB_POOL_MAX=10
{ "oss": { "bucket": "b", "region": "r" } }OSS_BUCKET=b
OSS_REGION=r
{ "queue": { "name": "q", "retry": 3 } }QUEUE_NAME=q
QUEUE_RETRY=3

结果边界与错误提示

常见问题

为什么键名要变成大写加下划线?

因为环境变量的通行约定是全大写下划线命名(如 DB_HOST),这样能避免大小写歧义,也与 shell 变量规则一致。本工具按此约定自动连接并大写,复制即可用。

嵌套对象是怎么展平的?

按深度优先递归:每层键名与当前前缀用下划线连接并大写,直到遇到叶子值才写出 KEY=VALUE。例如 { "a": { "b": 1 } } 得到 A_B=1,可逐字手算复核。

数组会被怎么处理?

数组按下标作为键名一部分继续展平,例如 { "list": [ "x", "y" ] } 得到 LIST_0=x、LIST_1=y。这样数组里的每个元素都能唯一对应一个环境变量。

字符串值的引号去哪了?

JSON 解析后字符串已经是不带引号的内容,输出时直接拼接,所以结果里的值天然没有引号。数字与布尔也原样输出,保持类型可读性。

我的配置会上传吗?

不会。所有 JSON 只在浏览器本地解析与展平,不联网、不写存储,刷新即还原默认示例,没有任何数据离开你的设备,可以放心粘贴项目真实配置。

导出的 CSV 为什么带 BOM?

因为 Excel 打开无 BOM 的 UTF-8 文件时常把中文显示成乱码,BOM 能让 Excel 正确识别编码。TSV 复制走剪贴板不经文件,所以不需要 BOM。

值和键名里能有特殊字符吗?

值会原样写入;若值含等号、空格或换行,本工具不做转义,导入 shell 时请自行加引号。键名只取字母数字下划线并大写,其余字符会被忽略以保证合法。

能批量处理很多份 JSON 吗?

本页一次处理一份 JSON。若需批量,逐份粘贴转换即可;理解「路径连接加大写」的方法论后,你也能把它写成脚本批量跑。

相关工具