我希望这里有人可以帮助我解决这个问题。我一直在争论这个错误太久了。
我正在向传感器的API发送获取请求,这会始终导致相同的错误: JSON解析错误:意外的EOF
我试图在网上找到答案并尝试了很多建议,但没有一个有效。
在开发环境中,我通过本地网络访问API。
fetchUsers(timer) {
let data = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Bearer ' + this.state.token.access_token
}
}
fetch('http://' + this.state.ip + ':5000/api/Devices/031.01.0657/LiveState', data)
.then(response => response.json())
.then(responseJson => {
this.setState({
isLoading: false,
error: false,
userDataSource: responseJson,
refreshing: false,
time: timer
}, function () {
// If success, do something (I never make it to this part)
});
})
.catch(error => {
this.setState({
isLoading: false,
error: true
})
console.error(error);
});
}
我当然使用其他方法来查看API返回的内容:
使用API接口时我得到的JSON响应:
{
"device": null,
"patient": null
}
使用Postman客户端时我得到的JSON响应:
{
"device": null,
"patient": null
}
使用与代码中完全相同的URL。返回的JSON也作为有效的JSON传递。
答案 0 :(得分:5)
我认为它在这一行失败了:response.json().
您可以在尝试转换之前看到响应的内容:
.then(response => {
console.log(JSON.stringify(response, null, 4))
return response.json())
}
我不确定
您的JSON中的空
值。也许你应该把
"空"
希望它可以帮到你!
答案 1 :(得分:0)
只需在正在抛出的行上捕获错误就可以了。问题是response.json为空
try {
responseData = await response.json();
} catch (e) {
dispatch({ type: XXX_SSSSS, service: null });
}