【问题标题】:Missing data from JSON.parseJSON.parse 中缺少数据
【发布时间】:2020-07-24 11:13:41
【问题描述】:

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

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

图像的数据是原始字节,之前以表单的形式上传。 与

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 中表示的原始数据有关吗?

【问题讨论】:

    标签: javascript json image blob


    【解决方案1】:

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

    【讨论】:

    • 我尝试对来自服务器的二进制文件进行 base64 编码,并在客户端获取正确的数据大小。但是,atob() 会产生完全不同的结果。
    猜你喜欢
    • 2015-08-27
    • 2012-11-25
    • 2014-03-14
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多