如何在Node.js中解码base64编码的JSON对象字符串

8

我有一个 JSON 对象 X

var X = {
  'a': 'A',
  'b': 'B'
}

我正在使用客户端JavaScript中的btoa()对上述对象进行编码

var getEncryptedPayload = function(payload) { // payload is a JSON object
  payload = JSON.stringify(payload)
  payload = window.btoa(payload)
  return payload;
}

我想在Node.js中解码上面编码的字符串。我尝试使用Buffer进行解码,但未获得结果。

var getRequestBody = function(request) {
    const encodedRequestBody = request.body;
    const decodedRequestBodyString = Buffer.from(encodedRequestBody, "base64");
    const requestBodyObject = JSON.parse(decodedRequestBodyString);
    return requestBodyObject;
}

但是,以上代码会抛出一个错误 -

类型错误[ERR_INVALID_ARG_TYPE]:第一个参数必须是字符串类型,实例Buffer、ArrayBuffer或数组的实例,或类似数组的对象。收到一个Object实例。

请问是否有人能提供解决方案?

1个回答

11
< p > < code > Buffer.from 的结果是 < code > Buffer 的一个实例。要将该缓冲区实例转换为可用于 < code > JSON.parse 中的字符串,代码需要先调用 < code > Buffer.toString 以使其起作用。

const requestBodyObject = JSON.parse(decodedRequestBodyString.toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接