Base64编码一个javascript对象

时间:2016-06-30 22:23:48

标签: javascript json node.js base64

我有大型的Javascript对象,我想为AWS Kinesis`编码为base-64 事实证明:

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

我试图尽可能简化这一点。

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

3 个答案:

答案 0 :(得分:52)

从String到Base-64

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

要解码回实际

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

供参考,请看这里。

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

答案 1 :(得分:23)

您误解了Buffer(str, [encoding])构造函数,encoding告诉构造函数用于创建str的编码,或者构造函数应使用什么编码将str解码为字节数组。

基本上Buffer类表示字节流,只有当你将它从/转换为字符串才能将编码转换成上下文。

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

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

答案 2 :(得分:0)

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

我在下面的行中使其在我的项目中起作用。

包括这些节点软件包base-64和utf8,并以下面的方式进行访问。

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