我在下面的表单中有一个大的嵌套哈希。我需要遍历并提取每个存储库的名称和URL,但我似乎无法做到这一点。有什么建议?
代码段:
repo_json = get_touched_repos()
repo_hash = JSON.parse(repo_json)
puts repo_hash.class
puts repo_hash['repositories'][0]['name']
哈希:
{
"repositories": [
{
"type": "repo",
"username": "...",
"name": "....",
"owner": "...",
"homepage": "",
"description": "description",
"language": "Java",
"watchers": 2,
"followers": 2,
"forks": 1,
"size":
"open_issues": 0,
"score": 1.0,
"has_downloads": true,
"has_issues": true,
"has_wiki": true,
"fork": false,
"private": false,
"url": "http://my.domain.com/repo/name",
"created": "2012-07-02T17:47:54Z",
"created_at": "2012-07-02T17:47:54Z",
"pushed_at": "2014-03-20T20:09:38Z",
"pushed": "2014-03-20T20:09:38Z"
},
{....}
]
}
答案 0 :(得分:2)
您可以使用Array#each方法执行此操作
repo_hash['repositories'].each do |repo|
puts repo['name']
puts repo['url']
end
答案 1 :(得分:1)
获取哈希中的名称和URL:
name_url_pairs = repo_hash['repositories'].collect do |repo|
{ name: repo['name'], url: repo['url] }
end
更新:返回包含多个提取值的小哈希。
按名称索引的另一种方法:
name_hash = Hash[
repo_hash['repositories'].collect do |repo|
[ repo['name'], repo['url'] ]
end
]