接口返回 blob 格式怎么转成 json

问题

工作中遇到一个接口逻辑是有时候会返回文件有时候会返回json,为了保证能接收到文件,需要将 responseType 设置为 blob。但是如果此时需要根据返回的是文件还是json来进行后续不同的操作,你在控制台输出返回的结果,会发现输出的都是blob文件,此时有没有办法转成json呢?

方案

在控制台输出一下返回为文件和返回为json的结果:
在这里插入图片描述
在这里插入图片描述
可以看出两者的type是不同的,而且输出 result.type 也可以获取到 application/jsontext/xml。因此我们可以通过这个type来进行是否转换为json的判断条件。

代码示例

api(param).then(result => {
  if (result.type === 'application/json') {
    const reader = new FileReader() // 创建FileReader实例
    reader.readAsText(result, 'utf-8') // 读取文件, 用字符串显示
    reader.onload = () => {
      console.log(JSON.parse(reader.result)) // string 转 json
    }
  }
})

结果

接口返回 blob 格式怎么转成 json_第1张图片

你可能感兴趣的:(业务技巧,json,javascript,前端)