2

我努力了:

require 'net/http'
require 'json'
require 'pp'
require 'uri'

url = "http://xyz.com"
resp = Net::HTTP.get_response(URI.parse(url))
buffer = resp.body
result = JSON.parse(buffer)
#result.to_hash
    #pp result
puts result  

并得到输出:

{"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }

采用 JSON 格式,但我只需id要将 的值打印为ABC.

4

1 回答 1

11

JSON 中的传入字符串如下所示:

{"id":"ABC","account_id":"123","first_name":"PEUS"}

用 JSON 解析后是哈希:

{"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }

所以,我会使用:

hash = {"id"=>"ABC", "account_id"=>"123", "first_name"=> "PEUS" }
hash['id'] # => "ABC"

这是一个更紧凑的版本:

require 'json'

json = '{"id":"ABC","account_id":"123","first_name":"PEUS"}'
hash = JSON[json]
hash['id'] # => "ABC"

注意我正在使用JSON[json]. JSON[]类方法足够智能,可以感知传入的参数是什么。如果它是一个字符串,它将解析该字符串。如果它是一个数组或哈希,它会序列化它。我觉得这很方便,因为它让我可以写作JSON[...],而不必记住我是在解析还是在使用to_json什么的。使用它是程序员第一美德的一个例子。

于 2013-07-09T09:34:42.967 回答