我有大型的Javascript对象,我想为AWS Kinesis`编码为base-64 事实证明:
let objStr = new Buffer(JSON.stringify(obj), 'ascii');
new Buffer(objStr, 'base64').toString('ascii') !== objStr
我试图尽可能简化这一点。
我如何base-64编码JSON并安全地将其解码回原始值?
答案 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())));