如何反序列化JSON对象

Alo*_*iel 6 json ruby-on-rails deserialization

我试图通过以下方式使用get请求:

  req = Net::HTTP::Get.new("/api/v1/users/external/1/features/DOWNLOAD7ab8d82b40/alloc?paymentPlanId=PRO_SUBSCRD725FCCCC6");
  req.add_field('ISV_API_KEY', '548f3d4b34ffdb2f294a870a9728af6940a75b66ba944d8ab6eef5a7543ca3db'); 
  req.add_field('ISV_API_SECRET', '69dafa8923f2b0da8153e6bcca3841de0fa88f1a031a5eb1946e54eb982cef48');                           

  res = Net::HTTP.start("localhost", 3000) {|http|
      res = http.request(req)
  }
Run Code Online (Sandbox Code Playgroud)

'postman`是一个向我显示此请求结果的应用程序

根据postman,这个请求返回我:

{
"total":"1200.0",
"used":"35.0",
"available":1165.0
}
Run Code Online (Sandbox Code Playgroud)

如何反序列化这个Json对象?假设我想要"used"参数.

我试过了:

json_string = req2.to_json
puts json_string
Run Code Online (Sandbox Code Playgroud)

但我得到了:

{"accept":["*/*"],"user-agent":["Ruby"],"isv_api_key":["548f3d4b34ffdb2f294a870a9728af6940a75b66ba944d8ab6eef5a7543ca3db"],"isv_api_secret":["69dafa8923f2b0da8153e6bcca3841de0fa88f1a031a5eb1946e54eb982cef48"]}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

puts JSON.parse(res)
Run Code Online (Sandbox Code Playgroud)

但我得到了:

can't convert Net::HTTPOK into String
Run Code Online (Sandbox Code Playgroud)

Dou*_*rer 7

使用Ruby的JSON库.

res = '{"total":"1200.0","used":"35.0","available":1165.0}'
JSON.parse(res) # => {"total"=>"1200.0", "used"=>"35.0", "available"=>1165.0}
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用的是Ruby 1.8.X,则可能需要使用json类.如果您在rails应用程序中工作,Rails需要它.