我正在使用React Native Android项目中的Web API。将我的本机版本更新为0.60.3后,我的响应数据未返回JSON,而是返回了Blob数据结构。
这是我从 then(res => {...})
中获得的信息请看图片
Screen-Shot-2019-07-18-at-17-25-10.png
_bodyInit 对象返回JSON。但是现在它返回 Blob ,这是我无法从Js代码到达的。
我尝试使用函数 res.json(), res.text() 他们工作了!但是这次我只是在 _bodyInit 中获取了数据。我找不到其他参数,例如 ok , header 等。
这是我尝试过的。就像我说的,有效。但是它只返回我的数据,而不返回其他参数,例如 ok , headers 等。
func loadXib() -> UIView? {
guard Bundle.main.path(forResource: "View", ofType: "nib") != nil else {
// file not exists
return nil
}
if let view = Bundle.main.loadNibNamed("View",
owner: self,
options: nil)?.first as? UIView {
return view
}
return nil
}
在“ devtools”中,如果我单击“ _bodyInit”对象。模拟器在下面给出错误。
Screen-Shot-2019-07-18-at-17-32-49.png
您有解决此问题的想法吗? 预先感谢!
答案 0 :(得分:0)
ok
属性具有响应,然后才能在其上调用json
方法。如果您的响应包含json,请调用json以将主体序列化为json,如果响应包含blob,请调用.blob来将主体序列化为blob。查看响应here的更多属性。
.then((res) => {
console.log("response.ok", res.ok)
// print headers,
console.log("headers", res.headers.forEach(item=>console.log(item)))
// if response if json, call res.json
return res.json()
})
.then((res) => {
// here you will only get json data, not other properties.
console.log("json data is ", res)
});
答案 1 :(得分:0)
已解决 我发现了两种解决此问题的方法。
.then((res) => {
if (res.ok) {
res.json().then(res=>{
console.log(res)
})
} else console.log("not ok")
});
.then(async res => {
if(res.ok) {
const response = await res.json()
console.log(response)
} else console.log("not ok")
})
很高兴看到您提出其他解决方案。谢谢。