JSON解析错误:无法识别的令牌'?'在React Native中

时间:2018-04-29 08:03:27

标签: json parsing react-native

我正在研究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数据的可能性吗?内容类型,没有出现这种错误?

谢谢!

2 个答案:

答案 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"}

我尝试用

解析这些JSON
JSON.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)删除它,它的工作原理!

感谢您的回答!