Base64 编码一个 javascript 对象

Base64 encode a javascript object

我有大型 Javascript 对象,我想为 AWS Kinesis 编码为 base-64` 结果是:

let objStr = new Buffer(JSON.stringify(obj), 'ascii');
new Buffer(objStr, 'base64').toString('ascii') !== objStr

我尽量保持简单。

我如何进行 base-64 编码 JSON 并将其安全地解码回其原始值?

从字符串到 Base-64

var obj = {a: 'a', b: 'b'};
var encoded = btoa(JSON.stringify(obj))

解码回实际

var actual = JSON.parse(atob(encoded))

参考看这里。

https://developer.mozilla.org/en/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

你误解了Buffer(str, [encoding])构造函数,encoding告诉构造函数使用什么编码来创建str,或者构造函数应该使用什么编码来解码str成一个字节数组。

基本上 Buffer class 表示字节流,只有当您将其转换为 from/to 字符串时,编码才会进入上下文。

您应该改用 buffer.toString("base64") 来获取缓冲区内容的 base-64 编码。

let objJsonStr = JSON.stringify(obj);
let objJsonB64 = Buffer.from(objJsonStr).toString("base64");

将对象转换为 base64 时,出现 超出拉丁语范围的问题 和字符无效错误。

我用下面一行让它在我的项目中工作。

包括 base64utf8 节点包并像这样访问它们:

var bytes = base64.encode(utf8.encode(JSON.stringify(getOverviewComments())));