上传文件
  1. base64hub
  2. 文本工具
  3. Base64 转 JSON

Base64 转 JSON:解码并格式化 JSON

粘贴 Base64,得到缩进整齐、便于阅读的 JSON。标准和 URL 安全的输入都可以,所以 API 字段、分页游标和令牌片段无需清理即可解码。

免费 无需注册,不限次数 本地 不上传任何内容 2 空格 格式化,可保存为 .json 更新于 2026年10月27日
输入 0 B输出 0 B大小 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何将 Base64 解码为 JSON

  1. 把 Base64 粘贴到 输入 · Base64。页面加载时带有一个示例,可以直接替换。
  2. JSON 显示在 输出 · 文本 中,以两个空格缩进。格式化 JSON 默认开启;取消勾选可以查看解码后的原始文本。
  3. 查看状态行:看起来像 显示 JSON,表示结果能作为有效的 JSON 解析。
  4. 复制输出 复制格式化后的 JSON。下载 把原始解码字节保存为 decoded.json。

示例 eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ== 解码并格式化后是:

{
  "id": 42,
  "name": "base64hub",
  "tags": [
    "json",
    "decode"
  ],
  "active": true
}

反方向转换请使用 JSON 转 Base64。

识别 Base64 中的 JSON

JSON 几乎总是以 { 或 [ 开头,这些字节会产生几种容易辨认的开头:

Base64 开头解码后的开头常见来源
eyJ{" + 字母紧凑的对象、JWT 头部和载荷
eyI{" + 数字或符号第一个键以数字开头的对象
eyAi{ "带空格的对象
ewog{ + 换行 + 空格格式化过的文件
W3s[{对象数组
WyJ[" + 字母字符串数组

所以 eyJhIjoxfQ== 就是 {"a":1},W3siYSI6MX1d 就是 [{"a":1}]。常见 Base64 前缀 页面列出了其他格式的更多类似模式。

Base64 编码的 JSON 从哪里来

  • JSON Web Token(JWT)的头部和载荷是用点分隔的 Base64URL 编码 JSON。把其中一段粘贴到这里,或把整个令牌粘贴到 JWT 解码器。JWT 中的 Base64 讲解了这种格式。
  • 有些 API 和 webhook 会在另一个 JSON 文档中以 Base64 字符串传递结构化元数据、分页游标或事件载荷。如果你手上有外层文档,解码 JSON 中的 Base64 可以一次性找出并解码所有这类字段。
  • Kubernetes 的 .dockerconfigjson Secret 以一个 JSON 文档的 Base64 存储容器镜像仓库凭据,而该文档本身又包含 Base64 编码的 auth 值;Docker config JSON 解码器 可以解开这两层。
  • 环境变量和 CI 密钥经常把 JSON 配置写成一行 Base64,以避免引号问题。

URL 安全的输入(- 和 _,无填充)会被自动接受,所以令牌片段可以原样解码。

JSON 无法格式化时

格式化需要有效的 JSON。解析失败时,解码后的文本会原样显示,通常足以看出问题:

  • 数据被截断,文本在某个值的中间结束了。请确认你复制了完整的 Base64 字符串;如果混进了换行或引号,修复 Base64 可以帮忙。
  • 文本不完全是 JSON。单引号、末尾多余的逗号({"a":1,} 就是 eyJhIjoxLH0=)和注释在手写的配置中很常见,但在 JSON 中都是无效的。
  • 字符集不对。按定义(RFC 8259),JSON 使用 UTF-8,所以如果带重音的字符显示不对,说明生成方用了别的编码;试试 字符集。
  • 载荷被压缩过。如果输出无法阅读,而 Base64 以 H4sI 开头,说明 JSON 在编码前做了 gzip 压缩。请使用 gzip Base64 解码器。

在代码中将 Base64 转为 JSON

import base64, json

s = "eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ=="
data = json.loads(base64.b64decode(s))
print(json.dumps(data, indent=2))

json.loads 可以直接接受字节。在 JavaScript 中,要先解码成字节再经过 TextDecoder,因为 JSON.parse(atob(s)) 会把所有非 ASCII 字符弄成乱码:

const s = "eyJuYW1lIjoiYmFzZTY0aHViIn0=";
const json = new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
JSON.parse(json).name;   // "base64hub"

URL 安全变体的写法见 Python 中的 Base64 和 JavaScript 中的 Base64。

常见问题

怎么把 Base64 解码为 JSON?

把 Base64 粘贴到上方。解码后的 JSON 会自动格式化,下载 会将其保存为 decoded.json。在代码中:Python 用 json.loads(base64.b64decode(s)),Node.js 用 JSON.parse(Buffer.from(s, "base64").toString())。

为什么我的 JSON 没有被格式化?

解码后的文本不是有效的 JSON,所以按原样显示。常见原因有字符串被截断、使用了单引号、末尾多了逗号或带有注释。这时“看起来像”字段会显示“文本”而不是 JSON。

怎么判断一个 Base64 字符串是 JSON?

大多数 JSON 对象编码后以 eyJ 开头,即 {" 后面跟一个字母。对象数组以 W3s 开头,格式化过的 JSON 则常以 ewog 开头。

能在这里解码 JWT 载荷吗?

能,粘贴中间那一段(两个点之间的部分)即可。如果要查看整个令牌的过期时间并校验签名,请使用 JWT 解码器。