web-dev-qa-db-ja.com

Base64はjavascriptオブジェクトをエンコードします

AWS Kinesisのbase-64にエンコードしたい大きなJavascriptオブジェクトがあります。

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

これをできるだけシンプルにしようとしています。

JSONをbase-64でエンコードし、元の値に安全にデコードするにはどうすればよいですか?

20
johni

Buffer(str, [encoding])コンストラクターを誤解した場合、encodingはコンストラクターにstrの作成に使用されたエンコーディング、またはコンストラクターがstrのデコードに使用するエンコーディングを指示しますバイト配列に。

基本的に、Bufferクラスはバイトストリームを表します。エンコードをコンテキストに変換するのは、文字列との間で変換を行う場合のみです。

代わりにbuffer.toString("base64")を使用して、base-64でエンコードされたバッファーコンテンツを取得する必要があります。

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

文字列から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

58
Zohaib Ijaz