2014-04-16 2 views
3

나는이 오류가 발생 이유에 혼란 스러워요은 :구문 분석 유효한 JSON 던지는 오류

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

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

나는이 JSON, 그래서 거래는 어떤 유효한이다는 것을 확인할 수 있습니다 http://jsonlint.com를 사용을 기반으로? 여기에 %q{}을 사용할 수 있다는 생각이 들지만, 상황은 적절하게 이스케이프 처리되지만, 실제로는 여기에서 헤로독을 사용합니다.

답변

7

그것은 루비 supports disabling interpolation in heredocs 그 작은 따옴표로 개방 식별자를 둘러싼에 의해 밝혀 내 위의 예에서, 그래서 그 결과는 다음과 같습니다

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

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