问题
工作中遇到一个接口逻辑是有时候会返回文件有时候会返回json,为了保证能接收到文件,需要将 responseType
设置为 blob。但是如果此时需要根据返回的是文件还是json来进行后续不同的操作,你在控制台输出返回的结果,会发现输出的都是blob文件,此时有没有办法转成json呢?
方案
在控制台输出一下返回为文件和返回为json的结果:
可以看出两者的type是不同的,而且输出 result.type
也可以获取到 application/json
和 text/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
}
}
})