.env ↔ JSON Converter

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

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

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.