在ruby中迭代数组的散列
我有一个散列,其中包含一个数组:在ruby中迭代数组的散列,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个散列,其中包含一个数组: { "id": "0001001", "name": "Bob Fisher", "work": [ { "employer": { "id": "6883542487", "name": "Marvel" }, "location": { "id": "108081209214649", "name": "Las Vegas, Nevada"
{
"id": "0001001",
"name": "Bob Fisher",
"work": [
{
"employer": {
"id": "6883542487",
"name": "Marvel"
},
"location": {
"id": "108081209214649",
"name": "Las Vegas, Nevada"
},
"position": {
"id": "148835345140954",
"name": "Cirkusdirektör"
},
"description": "API testing",
"start_date": "2012-01",
"end_date": "2013-01"
},
{
"employer": {
"id": "11648563484",
"name": "DC Comics"
},
"location": {
"id": "108424279189115",
"name": "New York, New York"
},
"position": {
"id": "178387758878908",
"name": "Dykare"
},
"description": "Api testing",
"start_date": "2010-02",
"end_date": "2011-01"
}
]
}
如何在ruby中迭代每个雇主的价值观?所以我得到如下输出:
Employer name: Marvel
Location name: Las Vegas, Nevada
Position: Cirkusdirektör
Description: Api testing
Start-date: 2012-01
End-date: 2013-01
Employer name: DC Comics
Location name: New York, New
Position: Cirkusdirektör
Description: Api testing
Start-date: 2012-01
End-date: 2011-01
就这么简单:
输出:
破译密码:
输出:
循环一次而不是两次。所以我只得到第一部分,而不是第二部分。你的数据是JSON吗?你需要解析它吗?它的数据来自facebook graph,而不是JSONC。请解释循环部分,会发生什么there@SHUMAcupcake现在告诉我哪一部分让你困惑,我只是打破了循环。这不是我的意思,但现在已经无关紧要了。我检查了ruby api。谢谢这不是有点冒险吗,因为工作不可能总是最后一个元素?在Ruby中的所有
Hash
es都没有排序之后。@itehnologic因此
不是完整的解决方案,它给你提示,它通过提供想法帮助你完成上面的一步。现在我试着按照OP的帖子做同样的事情。现在,如果情况如你所说的那样发生,OP应该管理好它,如果他理解这个代码的话。因为这不是什么大挑战。在这里,我们从不假设,被问到的问题,我们只回答。
data['work'].each do |entry|
puts entry['employer']['name']
puts entry['location']['name']
puts entry['position']['name']
puts entry['description']
puts entry['start_date']
puts entry['end_date']
end
h = {
"id"=> "0001001",
"name"=> "Bob Fisher",
"work"=> [
{
"employer"=> {
"id"=> "6883542487",
"name"=> "Marvel"
},
"location"=> {
"id"=> "108081209214649",
"name"=> "Las Vegas, Nevada"
},
"position"=> {
"id"=> "148835345140954",
"name"=> "Cirkusdirektör"
},
"description"=> "API testing",
"start_date"=> "2012-01",
"end_date"=> "2013-01"
},
{
"employer"=> {
"id"=> "11648563484",
"name"=> "DC Comics"
},
"location"=> {
"id"=> "108424279189115",
"name"=> "New York, New York"
},
"position"=> {
"id"=> "178387758878908",
"name"=> "Dykare"
},
"description"=> "Api testing",
"start_date"=> "2010-02",
"end_date"=> "2011-01"
}
]
}
h.values.last.each do |x|
puts "---------------------------------------"
puts "Employer name:- #{x['employer']['name']}"
puts "Location name:- #{x['location']['name']}"
puts "Position:- #{x['position']['name']}"
puts "Description:- #{x['description']}"
puts "Start-date:- #{x['start_date']}"
puts "End-date: #{x['end_date']}"
puts "---------------------------------------"
end
---------------------------------------
Employer name:- Marvel
Location name:- Las Vegas, Nevada
Position:- Cirkusdirektör
Description:- API testing
Start-date:- 2012-01
End-date: 2013-01
---------------------------------------
---------------------------------------
Employer name:- DC Comics
Location name:- New York, New York
Position:- Dykare
Description:- Api testing
Start-date:- 2010-02
End-date: 2011-01
---------------------------------------
h.values.last.each do |x|
p x
end
{"employer"=>{"id"=>"6883542487", "name"=>"Marvel"}, "location"=>{"id"=>"108081209214649", "name"=>"Las Vegas, Nevada"}, "position"=>{"id"=>"148835345140954", "name"=>"Cirkusdirekt\u00F6r"}, "description"=>"API testing", "start_date"=>"2012-01", "end_date"=>"2013-01"}
{"employer"=>{"id"=>"11648563484", "name"=>"DC Comics"}, "location"=>{"id"=>"108424279189115", "name"=>"New York, New York"}, "position"=>{"id"=>"178387758878908", "name"=>"Dykare"}, "description"=>"Api testing", "start_date"=>"2010-02", "end_date"=>"2011-01"}