将 ArrayBuffer 响应转换为 JSON

问题描述 投票:0回答:5

这里我调用 GetFile ,以 ArrayBuffer{} 对象的形式获取响应,如果我这样做,则在网络选项卡中响应为 {"errors":["photoProof Image is not available in the system"]}。

$scope.getDocuments = function(){
  Myservice.downLoadDocument('photo', $scope.user.mobileNo).
    then(function(response){
     })
}

如果我这样做,网络选项卡中的值将低于此值。

 response.byteLength = 64

如何将此 ArrayBuffer 转换为正确的 JSON 格式?

javascript angularjs json arraybuffer
5个回答
7
投票

这对我有用:

String.fromCharCode.apply(null, new Uint8Array(replaceThisByYourData))

7
投票

您可以使用TextDecoder

try {
  parsedJson = JSON.parse(new TextDecoder().decode(response as ArrayBuffer));
} catch (e) {
  parsedJson = {};
}

在我的例子中,请求正在等待 ArrayBuffer 响应,但如果后端发生错误,我会得到一个包含错误的 JSON 对象。我检查此代码的响应是否有错误。

需要 try-catch 块,因为如果 ArrayBuffer 不是 json,那么 JSON.parse() 方法将抛出错误。


3
投票

也许你可以使用json-bufferify。它是一个帮助您在 JSON 和 ArrayBuffer 之间进行转换的模块,您可以在 Node.js 和浏览器中运行它。


3
投票

您可以使用:

Buffer.from(yourArrayBufferValue).toJSON();

虽然这个答案有点晚了,但我希望它对某人有帮助


2
投票

var jsonResult = JSON.parse(JSON.stringify(response));

会创造奇迹。

© www.soinside.com 2019 - 2024. All rights reserved.