我正在构建一个针对 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> }
当我尝试执行 a 时,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 获得响应时,我会以错误的方式解决这个问题?