使用场景

当后端导出 Excel 或者其他文件类型时, 请求类型需要以二进制流返回ArrayBuffer,当请求以某种形式报错时,这时后端返回的就不在是二进制流了ArrayBuffer,这时会返回一个错误的Json对象, 但是我们最终接受到的还是以ArrayBuffer的形式数据,无法利用后端返回的错误信息,当作提示并作用在页面当中!

方案1

1
2
3
4
5
6
7
8
9
10
export function arrayBufferToJson( arrayBufferData ){
// 将其转换为uint8字节流
let uint8_msg = new Uint8Array(evt.data);
// 解码成字符串
let decodedString = String.fromCharCode.apply(null, uint8_msg);
console.log(decodedString);
// parse,转成json数据
let data = JSON.parse(decodedString);
console.log(data);
}

方案2

1
2
3
4
5
6
7
8
export function arrayBufferToJson( arrayBufferData ){
// 使用TextDecoder
let enc = new TextDecoder("utf-8");
let uint8_msg = new Uint8Array(arrayBufferData);
let jsonData = JSON.parse(enc.decode(uint8_msg));
console.log(jsonData);

}