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

文章讲述了如何在JavaScript中根据responseType处理不同类型的接口返回(blob或json),并展示了如何使用FileReader实现blob到json的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

工作中遇到一个接口逻辑是有时候会返回文件有时候会返回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
    }
  }
})

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯美式不加糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值