6 parsing json quote ruby-on-rails-4
我正在使用Rails 4.2.3.我正在解析第三方发送的JSON(我无法控制这个JSON是如何形成的).我注意到他们偶尔会发送不好的JSON,就像这样
'{"DisplayName":""fat" Tony Elvis ","Time":null,"OverallRank":19,"AgeRank":4}'
Run Code Online (Sandbox Code Playgroud)
请注意,在上面,带有引号的"fat"这个词搞砸了JSON的其余部分.在我的Rails代码中,我解析了JSON,就像这样......
json_data = JSON.parse(content_str)
Run Code Online (Sandbox Code Playgroud)
虽然我可以在JSON无法正确解析时捕获错误,但我想知道是否有办法解释这些布置不当的引号,更正它们以便上面的字符串不构成错误的JSON,然后正确解析JSON.
如果您确切知道可能会发生什么格式错误,您可能会设法做一些疯狂的解决方法,例如在将字符串解析为 json 之前使用正则表达式来匹配和更正字符串:
(?:")([^,:"]*"[^,:"]*"[^,:"]*)(?:")
Run Code Online (Sandbox Code Playgroud)
但如果不是绝对必要的话,这绝对是你不应该做的事情!您最好尝试联系源所有者并让他正确转义引号!
编辑:这是一个完整的 POC,其中未转义的引号被简单地删除:https://jsfiddle.net/MattDiMu/y8khwfw6/