2017-02-20 69 views
0

我正在玩Github API,并试图访问个别元素,但这样做有问题,主要的红宝石文件;如何访问此JSON解析哈希中的元素?

require 'octokit' 

Octokit.configure do |c| 
    c.login = 'example_user' 
    c.password = 'password' 
end 

user = Octokit.user 'example_user' 

uri = URI.parse("https://api.github.com/repos/angular/angular/stargazers") 

http = Net::HTTP.new(uri.host, uri.port) 

http.use_ssl = (uri.scheme == 'https') 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Get.new(uri.request_uri) 

res = http.request(request) 
response = JSON.parse(res.body) 

我可以访问例如第一个哈希没有问题;

puts response[0] 

但是,如果我尝试访问一个键的值,我只是得到一个空的返回;

puts response[0][:url] 

任何想法我做错了什么?

回答

2

随着JSON.parse你字符串化的按键,从而(假设,即response[0]已经拿到了"url"键):

response[0]['url'] 
+0

三江源@安德烈 - 杰伊涅科打开我的眼睛了“stringifyed”键的事实。 – jbk

+0

@jbk没有probs!有一种方法可以在解析json的同时将键转换为符号(传递'symbolize_names:true'选项)。但请注意,它不是递归的,只会象征“一级”键,而不是嵌套键 –