我有大的Javascript对象,我想编码为基地-64为AWS Kinesis '结果是:
let objStr = new Buffer(JSON.stringify(obj), 'ascii'); new Buffer(objStr, 'base64').toString('ascii') !== objStr
我想让事情尽可能简单。我如何用base-64编码JSON并安全地将其解码回原始值?
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
xwbd5t1u2#
您误解了Buffer(str, [encoding])构造函数,encoding告诉构造函数使用什么编码来创建str,或者构造函数应该使用什么编码来将str解码为字节数组。基本上,Buffer类表示字节流,只有当您将其从字符串转换为字符串时,编码才会进入上下文。您应该改为使用buffer.toString("base64")来获取缓冲区内容的base-64编码。
Buffer(str, [encoding])
encoding
str
Buffer
buffer.toString("base64")
let objJsonStr = JSON.stringify(obj); let objJsonB64 = Buffer.from(objJsonStr).toString("base64");
lvmkulzt3#
当转换对象到base64我得到超出拉丁文范围的问题和字符无效的错误。我让它在我的项目与下面的行工作。包括base64和utf8节点包,并按如下方式访问它们:
base64
utf8
var bytes = base64.encode(utf8.encode(JSON.stringify(getOverviewComments())));
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()已过时,不应再使用。
atob()
btoa()
4条答案
按热度按时间imzjd6km1#
从字符串到Base-64
解码回真实的
请查看此处以供参考。
https://developer.mozilla.org/en/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
xwbd5t1u2#
您误解了
Buffer(str, [encoding])
构造函数,encoding
告诉构造函数使用什么编码来创建str
,或者构造函数应该使用什么编码来将str
解码为字节数组。基本上,
Buffer
类表示字节流,只有当您将其从字符串转换为字符串时,编码才会进入上下文。您应该改为使用
buffer.toString("base64")
来获取缓冲区内容的base-64编码。lvmkulzt3#
当转换对象到base64我得到超出拉丁文范围的问题和字符无效的错误。
我让它在我的项目与下面的行工作。
包括
base64
和utf8
节点包,并按如下方式访问它们:q0qdq0h24#
您可以使用缓冲区轻松地对JSON/Base64进行编码和解码:
JSON到Base64:
Base64到JSON:
atob()
和btoa()
已过时,不应再使用。