JSON.parse(message) 失败,但“https://jsonlint.com/”显示消息有效。为啥会这样?
Posted
技术标签:
【中文标题】JSON.parse(message) 失败,但“https://jsonlint.com/”显示消息有效。为啥会这样?【英文标题】:JSON.parse(message) fails but "https://jsonlint.com/" shows that the message is valid. Why does this happen?JSON.parse(message) 失败,但“https://jsonlint.com/”显示消息有效。为什么会这样? 【发布时间】:2021-12-25 00:19:48 【问题描述】:这里失败了,
message = "\"response\":\"billDetails\":\"[\"name\":\"Account ID\"]\""
JSON.parse(message)
JSON::ParserError (809: unexpected token at '"response":"billDetails":"["name":"Account ID"]"')
【问题讨论】:
【参考方案1】:我不确定这是否会有所帮助。但是你的 json 字符串应该写自
"
"response":
"billDetails": "["name":"Account ID"]"
"
收件人:
'
"response":
"billDetails": ["name":"Account ID"]
'
在来自 billDetails 的数组中,您有两个额外的 ",在解析该字符串时会引发错误。
【讨论】:
谢谢先生。我使用 gsub 替换了额外的引号,它可以工作。 :) 所有类型的括号都存在这个问题。我猜 json lint 验证器是错误的。以上是关于JSON.parse(message) 失败,但“https://jsonlint.com/”显示消息有效。为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章
JSON.parse 解析json字符串时,遇字符串换行符,解析失败