React Native fetch返回错误:JSON意外的EOF

时间:2017-11-22 15:32:20

标签: json react-native fetch eof

我希望这里有人可以帮助我解决这个问题。我一直在争论这个错误太久了。

我正在向传感器的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传递。

2 个答案:

答案 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 });
}