2017-02-20 2 views
0

Я играю с API Github и пытаюсь получить доступ к отдельным элементам, но у меня возникают проблемы с этим, основной файл ruby;Как я могу получить доступ к элементам в этом анализируемом хэше 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

Thankyou @ андрей-Дейнеки для открытия глаза на 'stringifyed' ключи факт. – jbk

+0

@jbk no probs! Существует способ преобразования ключей в символы при разборе json (передача опции «symbolize_names: true»). Но имейте в виду, что он не рекурсивный и будет символизировать только ключи «первого уровня», а не вложенные –