我试图解析帖子请求返回的JSON。我有以下代码:
response = RestClient.post "http://localhost:4567", request.body.read,:content_type => :json, :accept => :json
result = JSON.parse('#{response.body}')
它给了我以下错误:
JSON::ParserError - 757: unexpected token at '#{response.body}':
我已检查response.body
是否返回正确的JSON。如果我复制JSON的内容并将其粘贴到JSON.parse
,它就能完美运行。但是,当我使用变量时,它不起作用。
答案 0 :(得分:4)
单引号不会扩展插值。 obj.calculate
或JSON.parse(response.body)
可以使用。
答案 1 :(得分:1)
由于您提到response.body
是一个字符串,因此您可以执行JSON.parse(response.body)
。你不需要插值它。
根据您在评论中提供的示例,它可以正常工作:
2.1.2-perf :007 > s = '{ "age_result": [ { "column_id": [ "B01001003", "B01001027" ], "name": "Under 5 years", "number": [ 6774.0, 6416.0 ] }, { "column_id": [ "B01001004", "B01001028" ], "name": "5 to 9 years", "number": [ 5981.0, 6470.0 ] }] }'
=> "{ \"age_result\": [ { \"column_id\": [ \"B01001003\", \"B01001027\" ], \"name\": \"Under 5 years\", \"number\": [ 6774.0, 6416.0 ] }, { \"column_id\": [ \"B01001004\", \"B01001028\" ], \"name\": \"5 to 9 years\", \"number\": [ 5981.0, 6470.0 ] }] }"
2.1.2-perf :008 > JSON.parse(s)
=> {"age_result"=>[{"column_id"=>["B01001003", "B01001027"], "name"=>"Under 5 years", "number"=>[6774.0, 6416.0]}, {"column_id"=>["B01001004", "B01001028"], "name"=>"5 to 9 years", "number"=>[5981.0, 6470.0]}]}