Skip to content

JSON 转 .env 转换器

粘贴 JSON 对象,立即生成 .env 文件。从配置本地生成 dotenv — 你的键和密钥绝不离开浏览器。100% 本地、零上传。

无追踪 浏览器中运行 免费
选项 · 保留键 · 无 export
0 字符
.env 输出
0
已针对仅对象输入处理、往返安全的加引号、嵌套值扁平化及键规范化审核 — Go Tools 工程团队 · 2026年6月12日

什么是 .env 文件?

一个 .env 文件(dotenv 文件)是一组纯文本的 KEY=VALUE 对,在源代码之外保存环境配置和密钥。它是 Node.js、Vite、Next.js、Python、Ruby 和 Docker Compose 的事实标准 — dotenv 库会加载该文件并把每一对注入进程环境。由于它通常存储数据库密码、API 密钥和访问令牌,.env 文件被当作敏感文件对待并被排除在版本控制之外。

从 JSON 生成 .env 文件是常见的解析配置任务的反向操作:你已经有了作为 JSON 对象的配置 — 来自一个 API 响应、一份配置导出、一次密钥管理器转储,或一个以编程方式构建设置的脚本 — 而你需要一个 .env 文件放入项目或交给容器。这个转换器遍历你 JSON 对象的顶层键,为每个属性写出一个正确加引号的 KEY=VALUE 行。

这个工具围绕几个深思熟虑的决策构建:

**1. 往返安全的加引号。** 数字和布尔值裸写,null 变成空值,任何包含空格、换行、# 或引号的字符串都会被自动加双引号并转义。结果能干净地经过 dotenv 以及配套的 .env 转 JSON 转换器 解析回来,使一个值在往返中绝不改变含义。

**2. 对嵌套的诚实处理。** 一个 .env 文件按定义是扁平的。工具不会悄悄丢弃嵌套数据,而是把每个嵌套对象或数组序列化为一个紧凑的 JSON 字符串,并警告你哪些键被扁平化,使你能判断 .env 是否真的是合适的目标。

**3. 可选的键规范化。** 键默认按原样保留以避免丢失信息。打开「规范化键」把 camelCase 或 kebab-case 转换为环境变量使用的 UPPER_SNAKE_CASE 约定,并对任何仍无法构成合法名字的键给出警告。

**4. 100% 基于浏览器的隐私。** 你粘贴的 JSON — 通常正是你即将写入 .env 的凭据 — 绝不离开浏览器。没有上传、没有服务器往返、没有日志记录;在 DevTools 网络标签页中验证零网络请求。

转换之前,你可以用 JSON 格式化 校验或美化 JSON,或用 JSON 转义 对一个 JSON 字符串反转义。如果你的配置用结构表达更好,JSON 转 YAML 能保留扁平 .env 无法保留的嵌套。

// Generate .env lines from a JSON object in Node.js
const config = {
  DATABASE_URL: 'postgres://user:pass@localhost:5432/mydb',
  PORT: 8080,
  DEBUG: true,
  NOTE: 'value with spaces',
};

const needsQuotes = (s) => /[\s#"'\n]/.test(s);

const env = Object.entries(config)
  .map(([key, value]) => {
    if (typeof value === 'string') {
      return needsQuotes(value)
        ? `${key}=${JSON.stringify(value)}`
        : `${key}=${value}`;
    }
    return `${key}=${value ?? ''}`; // null -> empty value
  })
  .join('\n');

console.log(env);
// DATABASE_URL=postgres://user:pass@localhost:5432/mydb
// PORT=8080
// DEBUG=true
// NOTE="value with spaces"

核心功能

往返安全的加引号

数字和布尔值裸写,null 变成空值,含空格、换行、# 或引号的字符串会被自动加双引号并转义,使它们能干净地经过 dotenv 解析回来。

诚实的嵌套处理

嵌套对象和数组无法存在于扁平的 .env 中,所以每个都会被序列化为一个紧凑的 JSON 字符串,并有一条警告精确列出哪些键被扁平化 — 绝不是无声更改。

可选的键规范化

默认按原样保留键 — 对任何不合法的 env 名字给出警告 — 或打开「规范化键」把 camelCase 和 kebab-case 转换为环境变量使用的 UPPER_SNAKE_CASE 约定。

可选的 export 前缀

在每行前加上 export,使生成的 .env 文件能在 shell 中直接被 source,匹配 CI 和部署脚本的风格。

实时转换

.env 输出会随你输入或粘贴 JSON 而即时更新。大输入(超过 200KB)会切换到手动模式,带一个「转换」按钮以保持浏览器响应流畅。

100% 基于浏览器的隐私

所有转换都在你的浏览器中本地运行。你粘贴的 JSON — API 密钥、凭据、令牌 — 绝不会被上传、记录或存储在任何服务器上。

示例

配置对象转 .env

{
  "DATABASE_URL": "postgres://user:pass@localhost:5432/mydb",
  "PORT": 8080,
  "DEBUG": true,
  "LOG_LEVEL": "info",
  "API_KEY": "sk_live_abc123"
}
DATABASE_URL=postgres://user:pass@localhost:5432/mydb
PORT=8080
DEBUG=true
LOG_LEVEL=info
API_KEY=sk_live_abc123

一个扁平的 JSON 配置对象变成一个干净的 .env 文件。数字和布尔值不加引号写出;普通字符串原样写出。可直接保存为 .env 并用 dotenv 加载。

需要加引号的值

{
  "GREETING": "Hello, World",
  "MOTD": "line one\nline two",
  "COLOR": "#ff0000",
  "NOTE": "value with # hash",
  "EMPTY": null
}
GREETING="Hello, World"
MOTD="line one\nline two"
COLOR="#ff0000"
NOTE="value with # hash"
EMPTY=

包含空格、换行、# 或引号的字符串会被自动用双引号包裹并转义,使它们能完整经过 dotenv 的往返。null 值变成一个空赋值(KEY=)。

把键规范化为 UPPER_SNAKE_CASE

{
  "databaseUrl": "postgres://localhost/mydb",
  "poolSize": 10,
  "enable-signup": true
}
DATABASE_URL=postgres://localhost/mydb
POOL_SIZE=10
ENABLE_SIGNUP=true

打开「规范化键」选项后,camelCase 和 kebab-case 的键会被转换为环境变量使用的 UPPER_SNAKE_CASE 约定。关闭时,原始键会被原样保留。

嵌套对象被扁平化为 JSON 字符串

{
  "APP_NAME": "my-app",
  "FEATURES": { "signup": true, "beta": false },
  "REGIONS": ["us-east-1", "eu-west-1"]
}
APP_NAME=my-app
FEATURES="{\"signup\":true,\"beta\":false}"
REGIONS="[\"us-east-1\",\"eu-west-1\"]"

.env 文件是扁平的,所以嵌套对象和数组无法原生表示。工具会把每个嵌套值序列化为一个紧凑的 JSON 字符串并加双引号,并显示一条警告列出哪些键被扁平化,使该行为绝不无声进行。

使用方法

  1. 1

    粘贴你的 JSON 对象

    在上方输入框中输入或粘贴一个扁平的 JSON 对象。你也可以点击「加载示例」来试用配置对象、需要加引号的值或嵌套对象。

  2. 2

    查看实时 .env 输出

    .env 文件会立即出现在输出面板中。切换「规范化键」以获得 UPPER_SNAKE_CASE 名字,或在文件将被 shell source 时切换「添加 export 前缀」。

  3. 3

    复制或下载

    点击「复制」把 .env 复制到剪贴板,或点击「下载」保存为 .env 文件 — 可直接放入你的项目并用 dotenv 加载。

常见 JSON 陷阱

顶层数组或标量

.env 文件是一组命名变量的扁平集合,所以输入必须是一个 JSON 对象。顶层数组或裸值(如字符串或数字)没有键名可映射到变量,工具会报告错误。先把你的数据用带有描述性键的对象包裹起来。

✗ 错误
["a", "b", "c"]
✓ 正确
{"ITEMS": "a,b,c"}

无效的 JSON 语法

输入必须是合法的 JSON。尾随逗号、单引号和未加引号的键是从 JavaScript 抄来的常见错误,会导致带行号和列号的解析错误。所有键和字符串值都用双引号,并移除任何尾随逗号。

✗ 错误
{'PORT': 8080,}
✓ 正确
{"PORT": 8080}

期望 .env 中有嵌套结构

嵌套对象和数组无法在扁平的 .env 文件中原生表示。工具会把它们序列化为 JSON 字符串并警告你,但该值会变成一个不透明的单一字符串。如果你需要保留结构,请转换为 YAML 而非 .env。

✗ 错误
{"DB": {"host": "localhost", "port": 5432}}
✓ 正确
{"DB_HOST": "localhost", "DB_PORT": 5432}

不是合法变量名的键

多数 shell 和加载器只接受匹配 [A-Za-z_][A-Za-z0-9_]* 的变量名 — 以数字开头或含空格或短横线的键是无效的。按原样保留键时工具会就这类键警告你;「规范化键」能修复大小写和短横线,但无法挽救以数字开头的名字,所以请在你的 JSON 中重命名这类键。

✗ 错误
{"2fa-enabled": true}
✓ 正确
{"TWO_FA_ENABLED": true}

需要加引号却未加引号的字符串

如果你手写 JSON,记住一个含空格或 # 的值仍必须是合法的 JSON 字符串(在双引号中)。工具之后会为 .env 自动重新加引号。错误在于在输入侧忘了 JSON 引号,这会产生无效的 JSON。

✗ 错误
{"MSG": Hello World}
✓ 正确
{"MSG": "Hello World"}

常见使用场景

从配置导出生成 .env
拿一份来自 API、设置面板或密钥管理器的 JSON 配置导出,把它变成一个可直接使用的 .env 文件,用于本地开发或容器。
搭建 .env 模板
构建一个描述新服务所需变量的 JSON 对象,把它转成 .env,并提交一个 .env.example,让队友清楚知道要填哪些键。
把 JSON 配置的工具桥接到 dotenv
一些工具以 JSON 输出配置,而你的运行时期望一个 .env。把 JSON 输出转成 dotenv 格式,使管道的两端就同一组变量达成一致。
生成可被 source 的 shell env 文件
启用 export 前缀以生成一个可在 shell 或 CI 步骤中直接 source 的文件,一次粘贴就把一个 JSON 配置块变成导出的环境变量。
往返配置
把它与 .env 转 JSON 转换器配对,以结构化 JSON 编辑配置并写回 .env — 往返安全的加引号保证值在双向中都能存活。
规范化大小写混杂的键
用「规范化键」选项把一个带 camelCase 或 kebab-case 键的 JSON 对象转成带一致 UPPER_SNAKE_CASE 变量名的 .env,匹配环境变量约定。

技术细节

仅对象输入与按类型序列化
输入用浏览器原生的 JSON.parse() 解析,且必须是一个顶层对象;数组和标量会被以清晰的错误拒绝。每个顶层属性按类型序列化:数字和布尔值裸写,null 变成空值(KEY=),字符串直接写出,除非它包含空格、换行、# 或引号,此时会被加双引号并转义以保证往返安全。
嵌套值与键规范化
嵌套对象和数组用紧凑的 JSON.stringify 序列化、加双引号并转义,并有一条警告指明被扁平化的键。可选的「规范化键」步骤把键转换为 UPPER_SNAKE_CASE,解决大多数无效名字;当按原样保留键时,任何不匹配 [A-Za-z_][A-Za-z0-9_]* 的键会触发无效名字警告。可以为每行添加一个可选的 export 前缀。
基于浏览器 — 无上传、无服务器
所有处理都完全在你浏览器的 JavaScript 引擎中进行;任何时候都不会有 JSON 数据通过网络传输。序列化器是自研的,没有外部依赖,因为 Node 的 dotenv 库对浏览器不安全。超过 200KB 的输入会从实时模式切换到手动模式(明确点击「转换」)以保持浏览器响应流畅。

最佳实践

除非需要 env 约定,否则按原样保留键
当消费应用已经期望你 JSON 中确切的键名时,让「规范化键」保持关闭,使任何键都不会被意外重命名。只有当你明确想要环境变量惯用的 UPPER_SNAKE_CASE 约定时才打开它。
有意地扁平化嵌套,而非意外地
嵌套值在 .env 中变成一个不透明的 JSON 字符串,多数应用无法自动解析回来。当你看到扁平化警告时,最好在转换前把 JSON 重整为扁平、带前缀的键(DB_HOST、DB_PORT),或选择像 YAML 这样的结构化格式。
信任自动加引号以实现往返
让工具来决定何时加引号 — 它只对需要的值加双引号并转义。这让 .env 保持可读,同时保证含空格、换行或 # 的值能原样经过 .env 转 JSON 转换器往返。
只在仅浏览器的工具中生成密钥
你在这里转换的 JSON 实际上是一组凭据。只在完全运行于浏览器中的工具里生成 .env;在 DevTools 中验证零网络请求。这个转换器符合条件,不像服务端或 API 后端的生成器。
先校验 JSON 输入
如果 JSON 是手写的或由脚本组装的,先用 JSON 格式化 校验它,以捕获尾随逗号或未加引号的键,这样你得到的是一个干净的 .env 而非令人困惑的解析错误。

常见问题

如何在线把 JSON 转换成 .env 文件?
把一个 JSON 对象粘贴到上方的输入框。工具会在浏览器中立即生成一个 .env 文件 — 无需点击按钮。每个顶层属性都会变成一个 KEY=VALUE 行。你可以在「选项」面板中选择把键规范化为 UPPER_SNAKE_CASE 或添加 export 前缀,然后点击「复制」获取结果或「下载」保存为 .env 文件。一切都在本地运行,所以你的密钥绝不离开你的设备。
这接受什么样的 JSON?
输入必须是一个 JSON 对象(顶层的一组键/值对),因为 .env 文件本质上是一个扁平的变量列表。顶层数组或裸标量(如字符串或数字)无法映射到环境变量,所以工具会报告错误并要求提供对象。无效的 JSON 也会产生错误,并尽力给出行号和列号,方便你快速定位问题。
字符串、数字、布尔值和 null 是如何写出的?
数字和布尔值不加引号写出(PORT=8080、DEBUG=true)。null 值变成一个空赋值(KEY=),dotenv 会把它加载为一个空字符串。普通字符串原样写出,但包含空格、换行、# 或引号字符的字符串会被自动用双引号包裹并转义,使其能正确解析回来。这意味着输出能干净地经过 dotenv 解析器以及配套的 .env 转 JSON 转换器 往返。
嵌套对象和数组会怎样?
.env 文件无法表示嵌套 — 每个变量都是一个扁平字符串。当一个值是嵌套对象或数组时,工具会用 JSON.stringify 把它序列化为一个紧凑的 JSON 字符串,用双引号包裹并转义。一条非阻塞警告会精确列出哪些键以这种方式被扁平化,使你始终知道结构被折叠了。如果你的数据嵌套很深,JSON 转 YAML 这样的格式比 .env 能更好地保留层级。
「规范化键」选项有什么作用?
默认情况下原始 JSON 键完全按所写保留,所以不会丢失数据 — 在该模式下,任何尚不是合法环境变量名的键(多数 shell 和加载器只接受匹配 [A-Za-z_][A-Za-z0-9_]* 的名字)都会被标上警告,方便你重命名。启用「规范化键」后,键会被转换为 UPPER_SNAKE_CASE — 环境变量的约定风格(databaseUrl 变成 DATABASE_URL,enable-signup 变成 ENABLE_SIGNUP)— 这能自动解决大多数无效名字。
我的 JSON 数据会被发送到服务器吗?
不会。所有转换都完全在你的浏览器中通过 JavaScript 进行。你粘贴的 JSON — 通常包含你即将写入 .env 的 API 密钥、数据库凭据和令牌 — 绝不会被传输、绝不会存储在任何服务器上、也绝不会被记录。你可以打开浏览器的网络(Network)标签页,观察粘贴后触发零个请求来确认这一点。这正是它可以安全生成真实生产 .env 而不只是样本的原因。