typescript 在分析类型脚本中的Uint8Array时为Null

myzjeezk  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(176)

当从nodeJS调用aws Lambda客户端时,我得到了以下对象作为响应。

{
'$metadata': {
    httpStatusCode: 200,
    requestId: '1245',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  },
  ExecutedVersion: '$LATEST',
  Payload: Uint8Array(4) [ 110, 119, 106, 108 ],
  StatusCode: 200
}

下面是我必须读取有效负载数组的代码片段。

const res = await myclient.send(command);
const error = res.FunctionError;
console.log("res", res);
if (error) {
   throw new Error(`Error invoking lambda:${error}`);
}
if (!res.Payload) {
   throw new Error('Payload is empty');
}
const resultString = JSON.parse(new TextDecoder('utf-8').decode(res.Payload));
console.log("resultString", resultString);

然而当代码运行时,我得到了resultString null。我在这里做错了什么?我如何正确地读取负载数组?感谢任何建议。

9wbgstp7

9wbgstp71#

我不知道发生了什么。我试了一个简单的例子来看看发生了什么。

const array = new Uint8Array(4);
array[0] = 110;
array[1] = 119;
array[2] = 106;
array[3] = 108;

const res = new TextDecoder('utf-8').decode(array);

console.log(res); // nwjl

所以如果你得到的数据是正确的,省略JSON.parse至少会得到一个字符串,但是包含它会抛出一个错误。

相关问题