.env ↔ JSON Converter
Understand .env ↔ JSON Converter
这个转换器把 .env 文件变成 JSON 对象,也把 JSON 对象变回 .env 各行。
How it works
读取 .env 文件时,每一行在第一个 = 处切分,空行和以 # 开头的行被跳过,值两侧成对的引号会被去掉一层。由于 .env 没有类型,每个值都会以 JSON 字符串的形式出现,因此 PORT=3000 变成 "3000" 而不是 3000。反方向转换时,嵌套的 JSON 对象会用双下划线扁平化——{"db":{"host":"localhost"}} 变成 db__host=localhost——而任何含空格、= 或 # 的值都会被加上引号。
When to use it
- 把本地 .env 设置迁移到接受 JSON 的部署平台或 CI 密钥仓库。
- 把冗长的 .env 文件当作结构化数据来读,以便与另一套环境做比对。
- 由某个服务给你的 JSON 配置块生成 .env 文件。
- 检查含空格或 # 的值,是否按你以为的方式被加了引号。
Watch out for
- 每个值都是字符串。如果你的代码期望从 JSON 一侧得到数字或布尔值,请在那边自行转换——"false" 是一个为真的字符串。
- 嵌套用双下划线展平,而不是用点号。JSON 对象 {db:{host:x}} 会变成 DB__HOST=x,因为点号在各种 shell 和加载器之间并不通用。反向转换时会用同一个分隔符还原嵌套结构。
- 注释只在自己独占一行时才有效。PORT=3000 # dev 会把 "3000 # dev" 整个当作值,而这也正是若干 .env 加载器的行为。
- 变量引用不会被展开——${DB_HOST} 会原样保留为字面文本。
Not the right tool for: 处理线上的生产凭据。这里的一切都在你的浏览器中运行、不会上传任何内容,但一份装满真实密钥的文件,仍然不该粘进一个你可能会共享屏幕的标签页。
Frequently Asked Questions
支持哪些 .env 语法?
KEY=value 键值对、用单引号或双引号包裹的值、以 # 开头的注释行、空行,以及 shell 会 source 的文件中使用的 export KEY=value 形式。export 前缀会从键名中剥离。值按字面处理——${VAR} 引用不会被展开,包裹的引号会被去掉。
.env 中如何表示嵌套对象?
本转换器使用双下划线。像 {"DB":{"HOST":"localhost"}} 这样的嵌套 JSON 会变成 DB__HOST=localhost,ASP.NET Core、Symfony 和许多 Docker 配置本就认识这个分隔符。反方向转换不会重建嵌套:DB__HOST 仍是一个扁平的键,因为 .env 本身没有嵌套这一概念。
什么时候需要把 .env 转成 JSON?
当你要部署到消费 JSON 配置的系统(AWS Lambda 环境变量、某些 CI/CD 平台)时、使用读取 JSON 配置文件的库(cosmiconfig)时,或者要把配置分享给无法解析 .env 语法的工具时,它很有用。
How to Use .env ↔ JSON Converter
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.