JSON 转 Base64
将 JSON 对象即时编码为 Base64 或 Base64URL 字符串。支持格式化与压缩,自动生成浏览器和 Node.js 代码示例,适合 JWT payload、API 传输和 URL 参数。
编码结果
典型应用场景
JWT Payload
JWT 的 Header 和 Payload 都是 Base64URL 编码的 JSON。本工具可以快速生成 payload 的 Base64URL 表示,用于调试或手动构造 token。
{"sub":"1234567890","name":"John","iat":1516239022}API 传输
将复杂的 JSON 配置或文件元数据编码为单个 Base64 字符串,放入 URL 参数、HTTP 头部或简单字段中,避免特殊字符和嵌套结构带来的解析问题。
{"action":"upload","type":"image/png","size":204800}状态持久化
将页面状态、筛选条件、用户配置等 JSON 对象编码为 Base64URL,放入 URL hash 或 localStorage,实现 shareable URL 和跨会话状态恢复。
{"page":2,"sort":"date","filters":{"type":"pdf"}}编码流程
- 1
解析 JSON
使用 JSON.parse() 验证输入格式,确保是合法的 JSON 对象或数组。
- 2
序列化
使用 JSON.stringify() 将对象转回字符串。可选择压缩(无空格)或格式化(带缩进)。
- 3
UTF-8 → 字节
使用 TextEncoder 将 JSON 字符串转为 UTF-8 字节序列,正确处理中文和 emoji。
- 4
Base64 编码
将字节序列转为 Base64 字符串(标准版),或进一步转为 Base64URL(替换 + / 去除填充)。
各语言实现对比
JavaScript(浏览器)
btoa(JSON.stringify(data))JavaScript(Base64URL)
btoa(JSON.stringify(data))
.replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')Node.js
Buffer.from(JSON.stringify(data)).toString('base64')Python
import base64, json
base64.b64encode(json.dumps(data).encode()).decode()Go
import "encoding/base64"
import "encoding/json"
b, _ := json.Marshal(data)
base64.StdEncoding.EncodeToString(b)常见问题
为什么要把 JSON 编码为 Base64?
Base64 将 JSON 转化为纯 ASCII 字符串,适合在不支持二进制的文本协议中传输。常见场景包括:将 JSON 放入 HTTP 头部、URL 参数、Cookie、JWT payload,以及嵌入 XML 或 CSV 文件中。
压缩 JSON 和格式化 JSON 编码有什么区别?
压缩(Minify)会去除 JSON 中的空格和换行,使 Base64 输出更短。格式化(Pretty-print)会保留缩进,编码后更长但原始数据可读性更好。大多数 API 传输推荐使用压缩版本,而调试或文档场景可以使用格式化版本。
Base64URL 和 Base64 有什么区别,JWT 用哪个?
Base64URL 将 + 替换为 -,/ 替换为 _,并去除末尾填充 =,使其可以安全放入 URL 和 HTTP 头部而无需额外编码。JWT(JSON Web Token)的 Header 和 Payload 都使用 Base64URL 编码,而不是标准 Base64。
编码后的 Base64 字符串是否可以被解码还原?
可以,Base64 编码是可逆的。使用 atob(encoded) 可以还原 Base64 字符串,再用 JSON.parse() 解析回 JSON 对象。Base64 不是加密算法,任何人都可以解码查看内容,不要用它保护敏感数据。
如何在 Python 中编码 JSON 为 Base64?
import base64, json; encoded = base64.b64encode(json.dumps(data).encode()).decode()。解码:data = json.loads(base64.b64decode(encoded).decode())。
JSON 中含有中文或 emoji 时编码结果是否正确?
工具使用 TextEncoder 将 JSON 字符串转为 UTF-8 字节,再进行 Base64 编码,可以正确处理中文、日文、emoji 等 Unicode 字符。JSON.stringify 默认不转义非 ASCII 字符,直接 btoa() 会失败,本工具已做兼容处理。