Ruby JSON.parse不工作

Ruby JSON.parse不工作,ruby,json,Ruby,Json,我试图解析post请求返回的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 '#{respons

我试图解析post请求返回的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中,它将非常有效。但是,当我使用变量时,它不起作用

单引号不展开插值。JSON.parseresponse.body或JSON.parse{response.body}应该可以工作。

因为您提到response.body是一个字符串,所以可以执行JSON.parseresponse.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]}]}

你的问题是什么?如何修复它以使解析工作?你能显示response.body是什么样子吗?@Atri它太长了,不能放在这里。{年龄结果:[{列id:[B01001003,B01001027],姓名:5岁以下,编号:[6774.06416.0]},{列id:[B01001004,B01001028],姓名:5至9岁,编号:[5981.06470.0]},{column_id:[B01001005,B01001029]}这是其中的一部分。@JackLi检查我的答案,如果那有帮助。JSON.parseresponse.body不起作用。它告诉我:错误类型错误:没有将数组隐式转换为字符串。我使用is_a?检查response.body是否为字符串,输出是否为真。@JackLi使用response.body.to_s,如果response.body是数组。@Atri response.body是字符串。我检查你能打印response.body的内容吗?