解析有效的JSON抛出错误

时间:2014-04-16 02:01:29

标签: ruby json

我很困惑为什么会抛出错误:

s = <<JSON
{"s": "This is \"valid\" JSON"}
JSON

JSON.parse(s) # => JSON::ParserError: 757: unexpected token at '{"s": "This is "valid" JSON"}'

基于使用http://jsonlint.com我可以确认这是有效的JSON,那么这笔交易是什么?我觉得我可以在这里使用%q{}并且事情会被正确地转义,但我真的宁愿在这里使用heredoc。

1 个答案:

答案 0 :(得分:8)

事实证明,Ruby supports disabling interpolation in heredocs通过用单引号包围开头标识符,因此在上面的示例中,它看起来像这样:

s = <<'JSON'
{"s": "This is \"valid\" JSON"}
JSON

JSON.parse(s) # => {"s"=>"This is \"valid\" JSON"}