← 返回工具箱

.env ⇄ JSON

DOTENV JSON · 开发辅助

解析 .env 文本转 JSON:引号、注释、export 前缀与行内 # 全兼容;JSON 反向生成 .env,键名合法性即时校验。

.env 文本
JSON 对象
解析规则:# 整行注释;无引号值的行内 # 视为注释起点;双引号值展开 \n \t \\ 转义;单引号值逐字原样;export 前缀自动剥离;键名须匹配 [A-Za-z_][A-Za-z0-9_]*,非法键会逐行列出。JSON → .env 仅接受扁平对象(string/number/boolean/null)。

>_ 使用指南 · GUIDE

把 .env 文件内容粘贴到左侧面板,右侧立即得到保序的 JSON 对象;反向把 JSON 粘到右侧,左侧生成标准 .env 格式。整个过程在浏览器本地完成,含密钥的环境变量不会上传到任何服务器。

解析器对真实世界的 .env 文件做了完整兼容:整行 # 注释、无引号值里的行内 # 注释、export FOO=bar 的 export 前缀、双引号内的 \n \t 转义展开、单引号值的逐字原样(POSIX 语义)——这些差异正是各家 dotenv 库行为不一致的重灾区,这里全部按规则明示处理。

典型步骤:

  1. 粘贴 .env:左侧输入,右侧 JSON 实时生成,无需点按钮
  2. 检查警告:键名不合法的行(如含连字符)会逐行列出并跳过,不会静默吞掉
  3. 反向生成:右侧粘贴扁平 JSON,左侧输出 .env,含空白或 # 的值自动加双引号并转义
  4. 复制产物:用面板右上角复制按钮取走结果,直接落库或贴回项目

>_ 常见问题 · FAQ

Q1 · 为什么我的键名被跳过了?

.env 的键必须匹配 [A-Za-z_][A-Za-z0-9_]*:以字母或下划线开头,后面只能是字母、数字、下划线。DB-HOST 这类带连字符的键不是合法的环境变量名(shell 无法直接导出),工具会逐行列出并跳过,你可以先改键名再转。

Q2 · 双引号和单引号里的值有什么区别?

遵循 POSIX shell 语义:双引号内的 \n \t \\ \" 会被展开成真实的换行、制表符、反斜杠和引号;单引号内的一切字符逐字原样,\n 就是反斜杠加 n 两个字符。把 shell 脚本里的配置搬进 .env 时,这个差异是多行密钥、正则表达式出错的头号原因。

Q3 · 行内 # 注释是怎么处理的?

无引号值中出现的 #(井号前有空格)会被视为注释起点并剥除,如 DEBUG=true # 开发开关 只保留 true。但双引号或单引号内的 # 属于值本身,不会被剥除——这与主流 dotenv 实现一致。

Q4 · JSON 转 .env 支持嵌套对象吗?

不支持,这是有意的:.env 是扁平的字符串键值对,嵌套对象没有无歧义的映射规则。工具仅接受值为字符串、数字、布尔或 null 的扁平对象;嵌套结构会作为非法键列出提醒,而不是静默展平或报错中断。

Q5 · 粘贴的 API 密钥安全吗?

安全。解析与生成全部在你的浏览器内完成,页面不发任何网络请求,输入既不上传也不落库。这也是它适合处理 .env 的原因——这类文件里通常全是真实密钥。

嵌入代码

把下面的代码复制到你的网页,即可将本工具嵌入为 iframe(自动隐藏导航与页脚)。

高度px
此工具在你的浏览器本地运行,输入内容不会上传。按 Ctrl K 可随时切换到其他工具。