Base64对javascript对象进行编码

Base64对javascript对象进行编码,javascript,json,node.js,base64,Javascript,Json,Node.js,Base64,我有一个大型Javascript对象,我想将其编码为base-64以用于AWS动画` 事实证明: let objStr = new Buffer(JSON.stringify(obj), 'ascii'); new Buffer(objStr, 'base64').toString('ascii') !== objStr 我尽量让这件事尽可能简单 如何对JSON进行base-64编码并将其安全解码回原始值?从字符串到base-64 var obj = {a: 'a', b: 'b'}; var

我有一个大型Javascript对象,我想将其编码为base-64以用于AWS动画` 事实证明:

let objStr = new Buffer(JSON.stringify(obj), 'ascii');
new Buffer(objStr, 'base64').toString('ascii') !== objStr
我尽量让这件事尽可能简单

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

从字符串到base-64

var obj = {a: 'a', b: 'b'};
var encoded = btoa(JSON.stringify(obj))
解码回到实际

var actual = JSON.parse(atob(encoded))
参考这里


您误解了
缓冲区(str,[encoding])
构造函数,
编码告诉构造函数创建
str
时使用了什么编码,或者构造函数应该使用什么编码将
str
解码为字节数组

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

您应该改为使用
buffer.toString(“base64”)
对缓冲区内容进行base-64编码

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

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

我在我的项目中使用了下面的代码

包括
base64
utf8
节点包,并按如下方式访问它们:

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

为什么您希望它们相等?好吧,我正在尝试使用
base-64
处理
JSON.parse(JSON.stringify(obj))
在对象上做什么。我该怎么做?url编码也可以吗?生成的字符串可能比采用64进制编码的字符串小。感谢您的解释。关于您的示例,它不适用于大型JSON。我刚刚检查过,解码只返回原始JSON的一部分。你的JSON有多大?我试过一些大的,效果很好。是的,你说得对。我可能只选择了编码字符串的一部分。
new Buffer()
现在已被弃用,您应该使用
Buffer.from()
来代替,请参见您是否尝试使用非ASCII字符?atob和btoa已完全损坏。这在没有逃逸字符的情况下不起作用JSON@Bender你能举个例子吗?