json 对JavaScript对象进行Base64编码

euoag5mw  于 2023-01-03  发布在  Java
关注(0)|答案(4)|浏览(251)

我有大的Javascript对象,我想编码为基地-64为AWS Kinesis '结果是:

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

我想让事情尽可能简单。
我如何用base-64编码JSON并安全地将其解码回原始值?

imzjd6km

imzjd6km1#

从字符串到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

xwbd5t1u

xwbd5t1u2#

您误解了Buffer(str, [encoding])构造函数,encoding告诉构造函数使用什么编码来创建str,或者构造函数应该使用什么编码来将str解码为字节数组。
基本上,Buffer类表示字节流,只有当您将其从字符串转换为字符串时,编码才会进入上下文。
您应该改为使用buffer.toString("base64")来获取缓冲区内容的base-64编码。

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

lvmkulzt3#

当转换对象到base64我得到超出拉丁文范围的问题和字符无效的错误。
我让它在我的项目与下面的行工作。
包括base64utf8节点包,并按如下方式访问它们:

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

q0qdq0h24#

您可以使用缓冲区轻松地对JSON/Base64进行编码和解码:

JSON到Base64:

function jsonToBase64(jsonObj) {
    const jsonString: string = JSON.stringify(jsonObj)
    return  Buffer.from(jsonString).toString('base64')
}

Base64到JSON:

function encodeBase64ToJson(base64String: string) {
    const jsonString = Buffer.from(base64String,'base64').toString()
    return JSON.parse(jsonString)
}

atob()btoa()已过时,不应再使用。

相关问题