是否可以在格式不正确的JSON字符串中检测错误的引号,然后将字符串解析为JSON?

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.

Mat*_*iMu 2

如果您确切知道可能会发生什么格式错误,您可能会设法做一些疯狂的解决方法,例如在将字符串解析为 json 之前使用正则表达式来匹配和更正字符串:

(?:")([^,:"]*"[^,:"]*"[^,:"]*)(?:")
Run Code Online (Sandbox Code Playgroud)

http://regexr.com/3dpj1

但如果不是绝对必要的话,这绝对是你不应该做的事情!您最好尝试联系源所有者并让他正确转义引号!

编辑:这是一个完整的 POC,其中未转义的引号被简单地删除:https://jsfiddle.net/MattDiMu/y8khwfw6/