JSON.parse 没有预期的行为
Posted
技术标签:
【中文标题】JSON.parse 没有预期的行为【英文标题】:JSON.parse not having the expected behaviour 【发布时间】:2018-09-12 09:29:14 【问题描述】:我正在尝试获取由post
发送的json
请求,并在其上执行JSON.parse
。但是发生了这个错误:
未捕获的 SyntaxError:JSON 中位置 2 的意外标记 m 在 JSON.parse() 在:1:19
下面的代码重现了错误:
const string = ' msg_reject: \'Rejeitado porque sim\', accept: 1, photo: \'FSADKJK23B1\' '
const json = JSON.parse(string)
这就是我在post
中发送它的方式
msg_reject: 'Rejeitado porque sim', accept: 1, photo: 'FSADKJK23B1'
我发送的方式有问题吗?
【问题讨论】:
这不是一个有效的 json 所以你为什么会得到这个错误 in JSON, Why is each name quoted?的可能重复 【参考方案1】:格式正确的 JSON 字符串在每个键和每个字符串值周围都有 "
双引号。
const string = ' "msg_reject": "Rejeitado porque sim", "accept": 1, "photo": "FSADKJK23B1" ';
const json = JSON.parse(string);
console.log(json);
【讨论】:
【参考方案2】:在 post 中发送时,首先将对象字符串化, 使用 JSON.stringify(object) 并发送,而检索 JSON.parse 应该可以正常工作
【讨论】:
【参考方案3】:您的 JSON 字符串格式不正确,您必须为键和值添加双引号 "
:
const string = ' "msg_reject": "Rejeitado porque sim", "accept": 1, "photo": "FSADKJK23B1" ';
有很多在线解析器可以用来验证你的 JSON 字符串,我通常使用https://jsonformatter.org/json-parser 来验证我的 JSON。
【讨论】:
以上是关于JSON.parse 没有预期的行为的主要内容,如果未能解决你的问题,请参考以下文章
为啥 JSON.parse(['1234']) 返回 1234?