我正在研究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解析错误:无法识别的令牌'?' "
所以我认为这意味着我需要直接更改服务器上数据的内容类型。但我无法做到这一点,因为我的客户正在将这些数据用于其他项目。
你知道用" text / html"转换为JSON数据的可能性吗?内容类型,没有出现这种错误?
谢谢!
答案 0 :(得分:0)
事实上,我有一些POST params要发送。见下文:
fetch('https://app.fr', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded',
}),
body: "tab_mobile=2",
})
.then((response) => response.text())
如果我将tab_mobile设置为1,我会得到:
{"message":"ok","tests":[{"id":"54","token":"6604","id_test":"20","Nom_prenom":"Alain DUPONT","Titre_du_test":"SIT 212 situation 1","fait":"0"},{"id":"55","token":"5066","id_test":"21","Nom_prenom":"Alain DUPONT","Titre_du_test":"SIT 212 situation 2","fait":"0"}]}
如果我将tab_mobile设置为2,我会得到:
{"message":"error"}
我尝试用
解析这些JSONJSON.parse(response.text())
如果tab_mobile = 1,我得到“JSON解析错误:无法识别的令牌”<' “即可。 但是,如果我将tab_mobile设置为2,则不会出现错误。我可以做事件
alert(JSON.parse(response.text()).message)
并打开一个窗口,其中包含“错误”。
总结: 当我得到{“message”:“error”}时,我可以将其解析为JSON,这样我就可以认为发送的数据是正确的JSON格式。 但是当我得到完整的数据{“message”:“ok”,test:[{...},{...}]}时,我无法将其解析为JSON。
你对我能做什么有一些想法吗?
答案 1 :(得分:0)
我发现了问题!
在数据客户端发给我的时候,有一个看不见的第一个字符。 当我在手机上呈现它时,我看到“{”消息“:”ok“,”testes“:...}但是当我在控制台中登录时,我看到在第一个”{“之前有一个奇怪的角色。 我用response.text()。substring(1)删除它,它的工作原理!
感谢您的回答!