Ruby JSON.parse错误

时间:2013-01-16 21:06:41

标签: ruby regex json

我正在构建一个对API使用cURL命令的脚本。我发送格式为application/json请求的cURL命令并获取结果,我将其解析为Ruby哈希。

当我使用cURL POST命令,获得格式正确的JSON响应时,这非常有用。但是,在使用cURL GET命令时,我返回了一个包含标题的JSON文档:

puts r:

HTTP/1.1 200 OK
X-Compute-Request-Id: req-7e625990-068b-47d1-8c42-9d3dd3b27050
Content-Type: application/json
Content-Length: 1209
Date: Wed, 16 Jan 2013 20:47:41 GMT

{ <JSON DATA> }

当我尝试执行JSON.parse(r)时,我在“HTTP / 1.1”处收到意外的令牌错误。

我的方法:

def list_flavors

    r = %x(curl -s -k -D - -H \"X-Auth-Token: #{$token}\" -X 'GET' http://10.30.1.49:8774/v2/27e60c130c7748f48b0e3e9175702c30/flavors -H 'Content-type:     application/json')

   response = JSON.parse(r)

   response
end

有没有办法使用正则表达式将主体拉出JSON文档然后解析?

或者在从cURL获得回复时我是否采取了错误的方法?

1 个答案:

答案 0 :(得分:2)

在将字符串传递给JSON.parse之前,您需要找到一种方法来删除该标头。 JSON.parse只需要有效的json。

我建议您使用非常通用的ruby Net::HTTP和/或OpenURI库,而不是卷曲和使用批发作为字符串,这样您就可以轻松访问您的响应了身体没有标题。