programing

Base64는 Javascript 객체를 인코딩합니다.

cafebook 2023. 3. 29. 21:52
반응형

Base64는 Javascript 객체를 인코딩합니다.

AWS Kinesis용 base-64로 인코딩하고 싶은 큰 Javascript 오브젝트가 있습니다.알고 보니 다음과 같습니다.

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

나는 이것을 가능한 한 단순하게 유지하려고 노력하고 있다.

어떻게 하면 Base-64로 JSON을 인코딩하여 원래 값으로 안전하게 디코딩할 수 있습니까?

문자열에서 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

당신이 오해한 것은Buffer(str, [encoding])컨스트럭터,encoding작성에 사용된 인코딩을 컨스트럭터에 알립니다.str또는 컨스트럭터가 디코딩에 사용하는 부호화str바이트 배열로 변환합니다.

기본적으로는Bufferclass는 바이트 스트림을 나타냅니다.문자열에서 문자열로 변환하는 경우에만 인코딩이 컨텍스트에 들어갑니다.

대신,buffer.toString("base64")버퍼 콘텐츠의 base-64 부호화를 취득합니다.

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

오브젝트를 base64로 변환할 때 latin range 문제에서 벗어나 문자 비활성화 오류가 발생하였습니다.

저는 아래 라인으로 프로젝트를 진행했습니다.

를 포함하다base64그리고.utf8다음과 같이 노드 패키지에 액세스합니다.

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

버퍼를 사용하여 JSON/Base64에서 쉽게 인코딩 및 디코딩할 수 있습니다.

JSON에서 Base64로:

function jsonToBase64(jsonObj) {
    const jsonString = 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()오래된 것이므로 더 이상 사용할 수 없습니다.

언급URL : https://stackoverflow.com/questions/38134200/base64-encode-a-javascript-object

반응형