【发布时间】:2018-04-29 08:03:27
【问题描述】:
我正在开发 React Native 项目,我尝试将数据从服务器转换为 JSON。 我已经在其他项目上做过,所以我知道它是如何工作的,但是这次我有一个错误: “JSON 解析错误:无法识别的令牌 '”。
这是我的代码:
fetch('https://app.fr', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
}),
})
.then((response) => response.json())
当我改为执行 response.text() 时,我得到一个正确 JSON 格式的字符串。所以我知道数据不是问题。
fetch('https://app.fr', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
}),
})
.then((response) => response.text())
查看论坛后,我发现错误可能是服务器向我发送内容类型为“text/html”而不是“application/json”的数据。是的,服务器向我发送内容类型为“text/html”的数据。
所以我尝试更改标题中的内容类型:
fetch('https://app.fr', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/json',
}),
})
.then((response) => response.json())
但我得到了那个错误:“JSON Parse error: Unrecognized token '?'”
所以我认为这意味着我需要直接更改服务器上数据的内容类型。但我不能这样做,因为我的客户正在将这些数据用于其他项目。
您是否知道任何可能转换为“text/html”内容类型的 JSON 数据而不会出现此类错误?
谢谢!
【问题讨论】:
-
问题与您的服务器响应有关,而不是与
Content-Type有关。服务器以 html 响应。您是在控制服务器代码还是在使用第三方 api?如果它是第三方 api,您很可能会收到响应错误。在返回response.json()之前检查response.status,看看你是否得到了正常的响应。 Related post -
感谢您的回答!我无法控制服务器代码和 response.status 给我 200 所以我认为没关系
-
如果 api 在请求成功时返回 html 内容,那么您需要以某种方式解析 html,然后将其转换为 json 或您可以使用的其他类型的数据。我认为你应该开始研究这一点。
-
问题是返回的不是html内容而是json内容。请参阅下面的答案
标签: json parsing react-native