UltKit

JSON转Base64编码

把JSON文件转成一行Base64文本,放进环境变量、YAML字段和API请求体时,不会再因引号、花括号和换行出问题。解码后得到的字节与原文件完全一致。

数据转换器

或将CSV, TSV, TXT … 文件拖放到此处 ·

单个文件最大 95 MB· 最多 20 个文件· 30 分钟后删除

输出

文件在我们的服务器上处理,并在 30 分钟后删除。

使用方法

  1. 1

    上传JSON文件

    添加 .json、.jsonl 或 .ndjson 文件,例如服务账号密钥或配置文件。每批最多 20 个文件,每个不超过 95 MB。

  2. 2

    选择是否加前缀

    默认输出纯 Base64。只有当文本要放进需要 data: URL 的 HTML 或 CSS 属性时,才在高级设置中开启 Data URI 前缀。

  3. 3

    编码并复制

    点击转换为 Base64 文本,下载结果,然后把字符串粘贴到你的密钥库、清单文件或请求体中。

把 JSON 编码为 Base64 不会改变数据,只是把它重新包装成普通的字母和数字,使其能通过那些会破坏大括号、引号和换行的环节。

为什么要把JSON文件编码为Base64

最典型的场景是凭据文件。云服务商给你一个 JSON 格式的服务账号密钥,而你的 CI 系统、托管后台或容器平台只提供单行文本框来存放密钥。直接粘贴原始 JSON,遇到第一个换行或第一个未转义的引号就会出错。编码为 Base64 后,同一个密钥就是一整段连续的字符串,应用在启动时再解码即可。

Base64 最早源于电子邮件:1996 年的 RFC 2045 定义了 MIME,用它让附件能够通过只支持 7 位文本的邮件服务器。2006 年,RFC 4648 又将这套字符表单独标准化。代价是体积变大,因为每 3 个字节会变成 4 个字符。对于图片和其他二进制文件,图片转 Base64 使用同样的编码并生成对应的 data URI。如果接收方读取的是 YAML 而不是 Base64 字段,用 JSON 转 YAML 可能就够了。

JSON转Base64示例

紧凑 JSON {"env":"prod","retries":3} 及其 Base64 编码
{"env":"prod","retries":3}

eyJlbnYiOiJwcm9kIiwicmV0cmllcyI6M30=

哪些地方需要Base64编码的JSON

只接受Base64形式JSON的场景
机构要求来源
Kubernetes Secretdata 下的每个值都必须是 Base64;要挂载 JSON 密钥文件,需先对其编码。kubernetes.io
GitHub REST API创建或更新文件内容的接口要求文件(包括 .json 文件)以 Base64 形式放在 content 中。docs.github.com
JSON Web Token(RFC 7519)JSON 头部和声明各自用 base64url 编码,再以点号连接。—
电子邮件附件(MIME).json 附件以 Base64 传输编码发送,以便通过仅支持文本的邮件服务器。—
Base64Base 64 编码 · RFC 4648 编码
一种用 64 个安全字符书写任意字节的方法:A–Z、a–z、0–9、+ 和 /,并以 = 补位。每 3 个输入字节变成 4 个输出字符,所以文本比原文件长约三分之一。它可以还原且不含密钥,因此只是一种传输格式,不是安全措施。

JSON与Base64格式说明

JSON

JavaScript 对象表示法

JSON 是一种轻量级结构化数据文本格式,由 Douglas Crockford 在 21 世纪初推广,并被标准化为 RFC 8259 和 ECMA-404。它用简单易读的语法表示对象、数组、字符串、数字、布尔值和 null。它是网络 API、配置文件以及几乎所有编程语言之间数据交换的默认格式。它没有内置注释、日期或模式,嵌套很深的大文件没有查看器就很难阅读。

压缩方式
–
透明度
–
动画
–
发布年份
2001 · Douglas Crockford
JSON 转换器

BASE64

Base64 编码文本

Base64 是 RFC 4648 中定义的一种编码,可把任意二进制数据转换为由 64 个安全文本字符组成的字符串。它用于在 HTML 和 CSS 中以 data URI 嵌入图片、给邮件添加附件,以及在 JSON 或 XML 中传输二进制数据。编码完全可逆,但会使数据增大约 33%。Base64 不是加密,没有任何安全性,任何人都可以解码。

压缩方式
无损
透明度
–
动画
–
发布年份
–
BASE64 转换器

当结构化数据必须放进一个不能包含原始引号和换行的单个字符串字段时,就需要把 JSON 编码为 Base64,例如 CI 密钥、Kubernetes 清单、API 的 content 字段或请求头的值。

JSON转Base64常见问题

Base64编码后的JSON是加密的吗?

不安全。Base64 只是一种编码,任何人用一条命令就能解码。Kubernetes 官方文档也提醒,Secret 默认只是 Base64 编码并以未加密方式存储,所以编码后的字符串要和原始密钥一样妥善保护。

令牌或URL里该用Base64还是base64url?

这里输出的是标准 Base64,使用 + 和 /,并以 = 补位。JWT 和 URL 参数使用 RFC 4648 中的 base64url 字符表,它改用 - 和 _,通常还会省略补位。如果目标要求 base64url,请替换这三个字符。

编码前需要压缩(minify)JSON吗?

通常会。空格、缩进和换行与其他字符一样都是字节,每 3 个字节会变成 4 个输出字符。先把格式化过的配置压缩(例如用 jq -c),编码后的字符串也会相应变短。

如何把字符串解码回JSON?

在 macOS 或 Linux 中运行 base64 --decode;在 PowerShell 中使用 [Convert]::FromBase64String;在浏览器中,把 atob 的结果交给 TextDecoder 处理,UTF-8 字符才能正确还原。

kubectl为什么提示illegal base64 data?

Secret 清单中 data 下的值必须是单行的有效 Base64。出现该错误通常是粘贴时混入了换行,或者把纯 JSON 放进了 data。纯文本值应放在 stringData 下,由 Kubernetes 帮你编码。

编码会改动JSON里的内容吗?

不会。Base64 在字节与文本之间无损互转,因此键、值、带重音的字符,甚至文件开头的字节顺序标记,解码后都会原样还原。