.env 转 JSON 转换器
粘贴 .env 文件,立即得到 JSON。数据库密码、API 密钥和令牌绝不离开你的浏览器 — 100% 本地、零上传、免费的 dotenv 解析器。
选项 · 2 空格 · 字符串
什么是 .env 文件?
一个 .env 文件(dotenv 文件)是一组纯文本的 KEY=VALUE 对,用来把配置和密钥保持在源代码之外。它是 Node.js、Vite、Next.js、Python、Ruby、Docker Compose 以及几乎每个现代框架中环境变量的事实标准 — dotenv 库及其移植版本会加载该文件并把每一对注入进程环境。由于该文件通常包含数据库密码、API 密钥、OAuth 客户端密钥和访问令牌,它几乎总是被 git 忽略并被当作敏感文件对待。
把 .env 文件转成 JSON 是一项常见任务:你需要把配置喂进一个读取 JSON 的工具、用 JSON Schema 校验它、导入密钥管理器、生成带类型的配置对象,或者只是把一个很长的 .env 作为结构化数据一目了然地查看。这个转换器把扁平的键值对列表变成一个 JSON 对象,每个键一个属性。
这个工具围绕几个深思熟虑的决策构建:
**1. 默认字符串,按需类型。** dotenv 从不强制类型转换 — 在运行时每个 process.env 值都是字符串。默认输出完全遵循这一点,所以 JSON 与你的应用实际看到的内容一致。当你想要带类型的 JSON 时,可选的「推断类型」开关会提升未加引号的数字、布尔值和 null 值,而加引号的值保持字符串,因为引号是一个明确的信号。
**2. 忠实的 dotenv 解析。** 注释、空行、export 前缀、单引号与双引号、转义序列、多行双引号值以及未加引号值上的行内注释,全都按 dotenv 库的方式处理 — 当你把 JSON 与应用加载的内容比对时不会有意外。
**3. 重复键安全。** 当一个键被定义两次时后面的值取胜,并有一条警告告诉你哪些键重复,使意外被遮蔽的密钥绝不会无声无息地溜过。
**4. 100% 基于浏览器的隐私。** 你的 .env 数据绝不离开浏览器。没有上传、没有服务器往返、没有日志记录 — 你可以在开发者工具的网络标签页中验证零网络请求。这是在线转换真实 .env 的唯一负责任方式,因为该文件本质上是一份凭据清单。
转换之后,你可以用 JSON 格式化 美化或校验结果,用 JSON 转义 将其转义以嵌入另一个字符串,或者用配套的 JSON 转 .env 转换器 反向操作。如果你的配置存放在 YAML 中,可以试试 YAML 转 JSON。
// Parse a .env file to a JSON object in Node.js using dotenv
import { parse } from 'dotenv';
const envText = `# Database
DATABASE_URL=postgres://user:pass@localhost:5432/mydb
DEBUG=true`;
// dotenv.parse returns a plain object of string values
const parsed = parse(envText);
// Every value is a string, just like process.env
const json = JSON.stringify(parsed, null, 2);
console.log(json);
// {
// "DATABASE_URL": "postgres://user:pass@localhost:5432/mydb",
// "DEBUG": "true"
// } 核心功能
忠实的 dotenv 解析
处理注释、export 前缀、单引号与双引号、转义序列(\n \t \r \\ \")、多行双引号值和行内注释 — 完全按 dotenv 库的方式。
默认字符串,按需类型
值默认为 JSON 字符串以匹配 dotenv 的运行时行为。打开「推断类型」以提升未加引号的数字、布尔值和 null 值;加引号的值始终保持字符串。
重复键警告
如果一个键被定义两次,最后的值取胜(dotenv 行为),并有一条警告列出每个重复的键,使被悄悄覆盖的密钥不会无声溜过。
实时转换
JSON 输出会随你输入或粘贴而即时更新。大输入(超过 200KB)会自动切换到手动模式,带一个「转换」按钮以保持浏览器响应流畅。
缩进 2 或 4 空格
在 2 空格和 4 空格缩进之间切换 JSON 输出,以匹配你的代码库风格或下游工具。
100% 基于浏览器的隐私
所有解析都在你的浏览器中本地运行。你的 .env 数据 — 数据库密码、API 密钥、令牌 — 绝不会被上传、记录或存储在任何服务器上。
示例
Node / Vite 的 .env
# Database DATABASE_URL=postgres://user:pass@localhost:5432/mydb DATABASE_POOL_SIZE=10 # Auth JWT_SECRET="super secret value" SESSION_TIMEOUT=3600 # Feature flags ENABLE_SIGNUP=true VITE_API_BASE=https://api.example.com
{
"DATABASE_URL": "postgres://user:pass@localhost:5432/mydb",
"DATABASE_POOL_SIZE": "10",
"JWT_SECRET": "super secret value",
"SESSION_TIMEOUT": "3600",
"ENABLE_SIGNUP": "true",
"VITE_API_BASE": "https://api.example.com"
} 一个典型的 Node.js / Vite .env 文件。默认情况下每个值都会变成 JSON 字符串(dotenv 标准)。注释行和空行会被跳过。如果想让 10 → 数字、true → 布尔值,请打开「推断类型」。
Docker Compose 环境变量
POSTGRES_DB=mydb POSTGRES_USER=admin POSTGRES_PASSWORD=s3cr3t! PGDATA=/var/lib/postgresql/data TZ=UTC NGINX_HOST=example.com NGINX_PORT=80
{
"POSTGRES_DB": "mydb",
"POSTGRES_USER": "admin",
"POSTGRES_PASSWORD": "s3cr3t!",
"PGDATA": "/var/lib/postgresql/data",
"TZ": "UTC",
"NGINX_HOST": "example.com",
"NGINX_PORT": "80"
} 把 Docker Compose 栈读取的 env_file 转成 JSON,方便加载进脚本、配置校验器或密钥管理器。任何内容都不会上传 — 真实凭据也可安全处理。
带 export 前缀的 CI 密钥模板
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_REGION=us-east-1 export DEPLOY_ENV=production
{
"AWS_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"AWS_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"AWS_REGION": "us-east-1",
"DEPLOY_ENV": "production"
} Shell 风格的 .env 文件常在每行前加上 export 以便被 source。解析器会自动剥离 export 前缀,给你干净的 JSON 键。
复杂 .env:引号、转义、多行与行内注释
APP_NAME=My App # unquoted value, inline comment stripped GREETING="Hello,\nWorld" # double quotes: \n becomes a real newline LITERAL='no \n escapes here' # single quotes: kept literally PRIVATE_KEY="-----BEGIN KEY----- line two line three -----END KEY-----" EMPTY=
{
"APP_NAME": "My App",
"GREETING": "Hello,\nWorld",
"LITERAL": "no \\n escapes here",
"PRIVATE_KEY": "-----BEGIN KEY-----\nline two\nline three\n-----END KEY-----",
"EMPTY": ""
} 一次展示所有 dotenv 边界情况:未加引号值上的行内注释会被移除,双引号值会处理 \n \t \r \\ \" 转义,单引号值按字面保留,而双引号值可以跨多行直到结束引号(适合 PEM 密钥)。
使用方法
- 1
粘贴你的 .env 文件
在上方输入框中输入或粘贴你的 .env 内容。你也可以点击「加载示例」来试用 Node/Vite .env、Docker Compose env 文件或 CI 密钥模板。
- 2
查看实时 JSON 输出
JSON 会立即出现在输出面板中。如果你想要数字和布尔值而非字符串,切换「推断类型」,并选择 2 或 4 空格缩进。
- 3
复制或下载
点击「复制」把 JSON 复制到剪贴板,或点击「下载」保存为 .json 文件 — 可直接用于配置加载器、密钥管理器或任何读取 JSON 的工具。
常见 .env 陷阱
某一行缺少 = 号
每个非注释、非空行都必须是一个 KEY=VALUE 对。没有 = 号的行无法解析,工具会报告错误并给出行号。一个没有值的裸键应写成 KEY=(空值)。
DATABASE_URL DEBUG true
DATABASE_URL= DEBUG=true
= 号两侧有空格
dotenv 在第一个 = 处拆分,两侧不带空格。写成 KEY = value 会让键变成 'KEY '(带尾部空格)、值变成 ' value'(带前导空格)。请去掉空格,或者如果值必须包含前导空白则给值加引号。
API_KEY = abc123
API_KEY=abc123
未加引号的值被行内注释吃掉
在未加引号的值上,一个空格后跟 # 会开始一个行内注释,其后的一切都会被丢弃。如果你的值确实包含 #,请给值加引号以保留该 #。
COLOR=#ff0000
COLOR="#ff0000"
期望单引号中的转义生效
单引号值是字面的 — \n 仍然是一个反斜杠加一个 n,不会变成换行。当你想让 \n、\t 或 \" 这样的转义序列被处理时,请使用双引号。
GREETING='Hello\nWorld'
GREETING="Hello\nWorld"
多行值中未闭合的双引号
双引号值可以跨多行,但必须用一个匹配的双引号闭合。如果缺少结束引号,解析器会一直消费各行直到文件末尾。请确保像 PEM 密钥这样的多行密钥以一个结束引号收尾。
KEY="-----BEGIN----- line two
KEY="-----BEGIN----- line two -----END-----"
重复键被悄悄覆盖
如果同一个键出现两次,最后的值取胜,前一个丢失。工具会警告你,但最干净的修复是移除重复项,使预期的值毫不含糊。
PORT=3000 PORT=8080
PORT=8080
常见使用场景
- 把配置喂进基于 JSON 的工具
- 把 .env 文件转成 JSON,将环境配置加载进读取 JSON 而非环境变量的工具、脚本和 SDK — 配置校验器、Schema 检查器和代码生成器。
- 把密钥导入管理器
- 许多密钥管理器(AWS Secrets Manager、Vault、Doppler)接受 JSON 进行批量导入。先把 .env 文件转成 JSON 对象,再一次性推送整组,而非逐个变量。
- 一目了然地查看长 .env
- 把一个庞杂的 .env 文件变成结构化、带缩进的 JSON,让你能扫视键、通过警告发现重复,并在提交更改前以可读格式审阅配置。
- 生成带类型的配置对象
- 启用「推断类型」以在 JSON 中获得数字、布尔值和 null,然后把它喂进带类型的配置层或一个 JSON 转 TypeScript 步骤,为你的环境变量推导出一个接口。
- 用 JSON Schema 校验
- 把 .env 转成 JSON 并通过 JSON Schema 校验器运行,在 CI 中强制必填键、值格式和允许的枚举 — 在部署前捕获配置错误的环境。
- 迁移 Docker Compose 的 env_file 配置
- 把 Compose 栈读取的 env_file 转成 JSON,用于另一个编排工具、配置服务器或文档 — 而不会把真实凭据暴露给任何外部服务。
技术细节
- 逐行的 dotenv 兼容解析
- 输入被逐行解析。空行和注释行(第一个非空白字符为 #)被跳过,可选的 export 前缀被移除,每个剩余行在第一个 = 处拆分为键和值。键会去除两侧空白。值遵循 dotenv 规则:双引号处理 \n \t \r \\ \" 转义并允许多行跨越,单引号是字面的,未加引号的值去除尾部空白和行内注释。
- 可选的类型推断
- 默认情况下所有值都作为 JSON 字符串输出,匹配 dotenv 的运行时行为 — 其中 process.env 的值始终是字符串。启用「推断类型」后,未加引号的值会被提升:数字字符串变成 JSON 数字,true/false 变成布尔值,空值或 null 变成 JSON null。加引号的值绝不会被推断 — 引号将它们标记为明确的字符串。重复键以「最后取胜」解析并附警告。
- 基于浏览器 — 无上传、无服务器
- 所有处理都完全在你浏览器的 JavaScript 引擎中进行;任何时候都不会有 .env 数据通过网络传输。没有外部依赖,因为解析器是自研的 — Node 的 dotenv 库依赖文件系统,对浏览器不安全。超过 200KB 的输入会从实时模式切换到手动模式(明确点击「转换」)以保持浏览器响应流畅。
最佳实践
- 保留默认字符串输出以匹配 dotenv
- dotenv 把每个值都作为字符串加载,所以默认的字符串输出恰好反映你的应用在运行时所见。只有当下游消费者确实期望带类型的 JSON 时才启用「推断类型」 — 否则你会面临一种不匹配:'0' 或 'false' 在 JSON 中的行为与运行中的应用不同。
- 为含 # 或空白的值加引号
- 在未加引号的值上,一个空格后跟 # 会开始行内注释,且尾部空白会被去除。如果一个值确实包含 #(十六进制颜色、片段 URL)或有意义的空格,请用双引号包裹,使其在 JSON 中被原样保留。
- 在源头解决重复键
- 工具会保留最后的值并在键重复时警告你,但 .env 文件中的重复几乎总是错误。移除多余的行,使哪个密钥生效不再含糊。
- 绝不要把生产密钥粘贴到服务端转换器
- 由于 .env 文件实际上是一份凭据清单,只在完全运行于浏览器中的工具里转换它。这个转换器就是如此 — 在 DevTools 中验证零网络请求 — 所以它对真实密钥是安全的,不像服务端或 API 后端的转换器。
- 在下游使用前校验 JSON
- 转换之后,先用 JSON 格式化 运行 JSON 以确认结构,再把它喂进 Schema 校验器、密钥管理器导入或配置加载器,使结构上的意外尽早浮现。
常见问题
如何在线把 .env 文件转换成 JSON?
值会转换成数字和布尔值,还是保留为字符串?
如果同一个键在我的 .env 文件中出现两次会怎样?
引号、转义和多行值是如何处理的?
这个解析器与 dotenv 库一致吗?
它能处理嵌套或分组配置吗?
我的 .env 数据会被发送到服务器吗?
相关工具
查看所有工具 →Base64 解码与编码工具
编码和格式化
免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。
Base64 转图片转换工具
编码和格式化
在浏览器中把 Base64 字符串或 data URI 解码还原为图片。预览、读取尺寸与 MIME,再下载为 PNG、JPG、GIF、SVG。无需上传。
CSV 转 JSON 转换器
编码和格式化
在浏览器中将 CSV 转换为 JSON。支持 RFC 4180、类型推断、表头行、大整数安全。100% 隐私,无需上传。
HTML 转 Markdown 转换器
编码和格式化
在浏览器中将 HTML 转换为干净的 Markdown——支持 GFM 表格、任务列表和链接。可选 ATX/Setext 标题及内联或引用链接。非常适合迁移网页内容或喂给 LLM。100% 私密,无需上传。
图片转 Base64 转换工具
编码和格式化
在浏览器中将图片转换为 Base64 data URI——支持 PNG、JPG、GIF、WebP、SVG、ICO。一键复制 HTML、CSS、Markdown 和 JSON 输出。100% 私密,无需上传。
JSON Diff 对比
编码和格式化
在浏览器中即时对比两份 JSON。Side-by-Side 高亮 + RFC 6902 JSON Patch 输出,一键忽略 timestamps、IDs 等噪音字段。100% 隐私保护,零上传。