【问题标题】:How to decode base64-encoded json object string in node js如何在节点 js 中解码 base64 编码的 json 对象字符串
【发布时间】:2021-06-06 05:25:36
【问题描述】:

我有一个 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;
}

我想在 nodejs 中解码上面的编码字符串。我尝试使用Buffer 解码,但没有得到结果。

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

但是,上面的代码抛出了一个错误-

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

谁能给我建议一个解决方案?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    Buffer.from 的结果是Buffer 的一个实例。要将缓冲区实例转换为可在JSON.parse 中使用的字符串,代码需要首先调用Buffer.toString 以使其工作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 2012-04-03
      • 2021-10-27
      • 1970-01-01
      • 2018-01-27
      相关资源
      最近更新 更多