JSON.parse 中缺少数据

Missing data from JSON.parse

在 API 中,我试图将一些图像作为原始数据与一些其他信息一起传递。在 json 回复中。例如

[{img:…………,data:a},
{img:………,color:red},
{img:………,dumb:1}]

图像的数据是原始字节,它是以前用 blob 形式上传的。 有

var xhr = new XMLHttpRequest;
...
xhr.onreadystate = function(){
  …
  var data = JSON.parse(this.response);
  for (let obj of data) {
    console.log(obj.img.length);
  }
  …
}
...
xhr.send()

我发现过程中有数据丢失。与 fetcharrayBuffer() 相比,图像数据的 length 较小。例如

var data = await fetch(url).(res)=>{return res.arrayBuffer();}};
Console.log(data);

可以从 3 个单独的提取中重建所有图像,但从 json 响应中失败。 JSON.parse() 删除数据有什么问题?这与 json 中表示的原始数据有关吗?

JSON默认不支持二进制数据。您可以使用一些解决方法,例如使用 base64 转义它,但它会增加请求大小的开销。