ruby-on-rails – 通过Flickr的API结果循环
我真的很努力让这个工作.
我正在查询Flickr API,它返回了一组数组和哈希值,我可以循环将数据添加到我的应用程序中. 我已经开始编写一些代码来迭代API结果来创建集合.它一直都在失败,并想知道你们中的任何人是否能够看到我是以正确的方式解决这个问题还是发现我做错了什么: def self.add_collection(collection) puts "Adding collection..." Collection.create!({ :flickr_id => collection['id'],:title => collection['title'],:description => collection['description'] }) puts "Added collection." end def self.add_all tree = Flickr.collections_list pp tree puts "Got response from Flickr" tree.each do |c| c[1].each do |c| add_collection(c) if c["collection"] add_collection(c['collection'][0]) end end end end 我的API结果是: {"collections"=> {"collection"=> [{"id"=>"57928212-7215447632914033423","title"=>"site.co.uk","description"=>"","iconlarge"=>"/images/collection_default_l.gif","iconsmall"=>"/images/collection_default_s.gif","collection"=> [{"id"=>"57928212-721457634949706778","title"=>"Holidays","collection"=> [{"id"=>"57928212-724157634943457291","title"=>"Standard","set"=> [{"id"=>"721576289846181735","title"=>"Di-ip","description"=>"11th-13th May 2008 - (-W)"},{"id"=>"7215-90497324306","title"=>"O-ay","description"=> "August 2005 - (P- T)"},{"id"=>"721576290947297760","title"=>"Iceland Holiday","description"=> "5- 2004 - (N-)"}]},{"id"=>"57928212-742157629691182748","title"=>"1 - W-09","set"=> [{"id"=>"721576296835355462","title"=>"D-er","description"=>""},{"id"=>"721576294683541696","title"=>"D-rea",{"id"=>"721576296843554852","title"=>"D-gdom",{"id"=>"721576297104465912","title"=>"Day 4 - Gilr-walk",{"id"=>"721576294710474644","title"=> "Day 5 - Calif-uth",{"id"=>"721576249710489442","title"=>"Day 6 - Si-untain",{"id"=>"721576429834618028","title"=> "Day 7 - Unive-za",{"id"=>"721576249834637138","title"=>"Day 8 - Se-Park",{"id"=>"721576249836419418","title"=>"Day 9 - Lego-Park",{"id"=>"721576249851123596","title"=>"Day 10 - Kn-re City",{"id"=>"721576298541700916","title"=>"Day 11 & 12 - Disn-sort",{"id"=>"721576249851713058","title"=>"Day 13,14 & 15 - La-as","description"=>""}]},{"id"=>"57928212-721547629866347760","title"=>"2 - Mi-10","set"=> [{"id"=>"721576294866337538","title"=>"Day 0 - Arr-rica",{"id"=>"721576298468655454","title"=>"Day 1 - M-a",{"id"=>"721576299707347598","title"=>"Day 2 - Adven-n",{"id"=>"721576430011649024","title"=>"Day 3 - W-un",{"id"=>"721576304034790528","title"=>"Day 4 - Sil-",{"id"=>"721576300354520246","title"=>"Day 5 - St-eum",{"id"=>"721576300443090072","title"=>"Day 6 - Si-uis",{"id"=>"721576300443098290","title"=>"Day 7 - Ho-rld",{"id"=>"721576300448416804","title"=>"Day 8 - Indi-ach",{"id"=>"721576300448431390","title"=>"Day 9 - -ca",{"id"=>"721457629997482351","title"=> "Day 10 - Mount O-eads",{"id"=>"721576304059600702","title"=>"Day 11 - Vall-",{"id"=>"57928212-721457630658165668","title"=>"3 - Intim-010","set"=> [{"id"=>"721576341693409808","title"=> "Day 1 - Gre-n City",{"id"=>"721576306547898798","title"=>"Day 1 - C-s",{"id"=>"721576306924436584","title"=>"Day 2 - -d",{"id"=>"721547630699845912","title"=>"Day 3 - Ran-vities",{"id"=>"721576304714758818","title"=>"Day 4 - Lo-urg",{"id"=>"721576304717785454","title"=>"Day 5 - Bu-urg",{"id"=>"721576304717785576","title"=>"Day 6 - Kin-ion",{"id"=>"57928212-742157631693570817","title"=>"4 - Bes-12","set"=> [{"id"=>"721576316493011733","title"=> "Day 0 - Early -orld Park",{"id"=>"721576316934409808","title"=> "Day 1 - Grea-ity",{"id"=>"721576431698474564","title"=>"Day 2 - Shijin-rk",{"id"=>"721576341703216195","title"=> "Day 3 - Happ-rk",{"id"=>"721574631713251068","title"=>"Day 4 - Victo-g",{"id"=>"721576314761492087","title"=>"Day 5 - Floral-ark",{"id"=>"721576318148565932","title"=>"Day 6 - H-du",{"id"=>"721576318148581382","title"=>"Day -ry",{"id"=>"721576318419272104","title"=> "Day 8 - Ha-Park",{"id"=>"721576314820243661","title"=> "Day 9 - Sha-ruise",{"id"=>"721574631872193783","title"=> "Day 10 - Fisherma-ervatory",{"id"=>"721574631874073880","title"=> "Day 11- Gongqin-ark",{"id"=>"721576318474794697","title"=>"Day 12 - Hap-ark",{"id"=>"721576318940558319","title"=>"Day 13 - -",{"id"=>"721576319544111677","title"=> "Day 14 - G-World",{"id"=>"721576319624210803","title"=> "Day 15 - Chi-or",{"id"=>"721576319628749339","title"=> "Day 16 - Kn-rld",{"id"=>"721576319751048564","title"=>"Day 17 - Ha-hen",{"id"=>"721576319749243775","title"=>"Day 18 - O-eing",{"id"=>"721576319765947399","title"=>"Day 19 - Dis-ong",{"id"=>"57928212-721576434943433385","title"=>"5 - T-13","set"=> [{"id"=>"721576349908483894","title"=>"Day 1 - Tai-ng",{"id"=>"721576349954099233","title"=>"Day 2 - -",{"id"=>"721576350042484738","title"=>"Day 3 - J-orld",{"id"=>"721576350594662914","title"=> "Day 4 - For-t",{"id"=>"721576350545445863","title"=>"Day 5-dise",{"id"=>"721576352944144798","title"=> "Day 6 - L-na",{"id"=>"57928212-721576435094962919","title"=>"6 - Japan 2013","set"=> [{"id"=>"721576350944001201","title"=>"Day 1 - Fli-dium",{"id"=>"721576350494923653","title"=>"Day 2 - Tok-a",{"id"=>"721576350497502859","title"=>"Day 3 - Tobu Zoo",{"id"=>"721576351430344700","title"=>"Day 4 - Uni-an",{"id"=>"721457635131070810","title"=>"Day 5 - Hira-mple",{"id"=>"721576351444725534","title"=>"Day 6 - Yo-adise",{"id"=>"721576351454178145","title"=>"Day 7 - Nag-nd",{"id"=>"721547635164257344","title"=>"Day 8 - Hok-oro",{"id"=>"721576354182539619","title"=>"Day 9 - Ru-ort",{"id"=>"721576351472948421","title"=>"Day 10 - Jo-ea",{"id"=>"721576351894974362","title"=>"Day 11 - -d",{"id"=>"721576352035465038","title"=>"Day 12- Tok-kitori",{"id"=>"721576352574508275","title"=>"Day 13- To-a",{"id"=>"721576352746739360","title"=>"Day 14 - Tok-ea",{"id"=>"721576354268544001","title"=>"Day 15 - --ea","description"=>""}]}]},{"id"=>"57928212-721574628668300643","title"=>"Days out","collection"=> [{"id"=>"57928212-721457628668352769","title"=>"One off's","set"=> [{"id"=>"721576308409580828","title"=>"ChThisip","description"=>"Sun 29th July 2012 (Neil T,Mandy T)"},{"id"=>"721576306394290306","title"=>"Blackpool - 8th Jul 2012","description"=> "(Neil T,MThisS,Ben K)"},{"id"=>"721576299940667113","title"=> "Legoland Thisne 2010","description"=>"This)"},{"id"=>"721576294405676947","title"=>"SkThisl 1)",{"id"=>"721576294391564267","title"=>"Canal Boating","description"=> "SunThismas)"},{"id"=>"721576294391564197","title"=>"SThisert","description"=> "12th Jul 2003 - (PeThisrk T)"},{"id"=>"721576294391560887","title"=>"BThises","description"=> " 29thThiss A)"},{"id"=>"721576290848461747","title"=>"Go Karting 2012","description"=>" 28th Jan 2012 for Neil's birthday"},{"id"=>"721576349284451987","title"=> "SThis A)",{"id"=>"57928212-721574628668280287","title"=>"Theme Parks","collection"=> [{"id"=>"57928212-721457634949768308","title"=>"TThisrk","set"=> [{"id"=>"721576334256718298","title"=> "TThisP)",{"id"=>"57928212-721576429626109372","title"=>"PlThisl","set"=> [{"id"=>"7215762945459430821","title"=>"PThis11","description"=>"(Neil T,Rick M,Jackie DM)"}]},{"id"=>"57928212-721576249991000745","title"=>"GuThisld","set"=> [{"id"=>"721576296244407020","title"=>"GThis011","description"=> "(NeiThiSEOrge)"}]},{"id"=>"57928212-721576294990999301","title"=>"FThisd","set"=> [{"id"=>"721576294625410346","title"=>"FlThis0","description"=>"(NThis)"}]},{"id"=>"57928212-721457628668340547","title"=>"DrThisor","set"=> [{"id"=>"721576294638932742","title"=>"DraThis010","description"=>"(NThisW)"}]},{"id"=>"57928212-721547628668287225","title"=>"AltThisrs","iconlarge"=> "http://farm8.staticflickr.com/7024/cols/72157628668287225_190361d603_l.jpg","iconsmall"=> "http://farm8.staticflickr.com/7024/cols/72157628668287225_190361d603_s.jpg","set"=> [{"id"=>"721576328264334688","title"=> "FebThis P)",{"id"=>"721576306265468434","title"=>"Alt-ers - 15th Jul 2012","description"=>"(N-g A)"},{"id"=>"721576303726416660","title"=>"A-n 2012","description"=> "(NThis K)"},{"id"=>"721576294666253333","title"=>"AThis2010","description"=>"(Thisl H)"},{"id"=>"721576294990697063","title"=>"AThis10","description"=>"(This)"},{"id"=>"721576299940655063","title"=> "This008","description"=>"(NThis)"},{"id"=>"721576429990712153","title"=> "Event 2011 - 31st Oct-1st Nov 2011",{"id"=>"721576295594429835","title"=>"This 29th-31st Oct 2009","description"=>"(ThisF)"},{"id"=>"721576291947499268","title"=> "Behi-l 2006",{"id"=>"721576295411694365","title"=>"Day 2010 - 21st Jun 2010","description"=>"This)"}]}]}]},{"id"=>"57928212-721457628985775057","title"=>"Yearly Events","collection"=> [{"id"=>"57928212-721576429836230144","title"=>"This","set"=> [{"id"=>"721576299818309211","title"=>"Here StThisees",{"id"=>"721576296173454860","title"=>"Thisats",{"id"=>"57928212-721576258985777547","title"=>"Birthdays","set"=> [{"id"=>"7215762899995365613","title"=>"This12",{"id"=>"57928212-721576298356236274","title"=>"Misc","set"=> [{"id"=>"721576295511800621",{"id"=>"721576295391565747","description"=>""}]}]}]},"stat"=>"ok"} 我真的可以帮忙解决这个问题.我认为这是数组和散列的多维方面,以及如何创建可以循环它以添加集合的东西.我现在需要忽略这些套装.集将在稍后添加. 更新: 一直在玩这个尝试慢慢弄清楚哈希的每个部分是什么,并具有以下内容: def self.add_all tree = Flickr.collections_list['collections'] puts "Got response from Flickr" tree.each do |c| c.each do |d| ap d.class #add_collection(d) end end 当我运行它时,d.class返回:
我可以访问数组部分,所以我可以继续迭代,因为我得到的是我无法执行.每个字符串(这是有道理的). 有任何想法吗? 解决方法
是的,那令人困惑.你需要知道的是
>顶级集合数组位于树[“集合”] [“集合”] 现在,根据这些指导原则,我们可以编写代码来遍历树.我们递归调用traverse_collection来处理子集合. def traverse_collection(collection) Collection.create! :flickr_id => collection["id"],:title => collection["title"],:description => collection["description"] if collection["collection"] for child in collection["collection"] traverse_collection child end end end for collection in Flickr.collections_list["collections"]["collection"] traverse_collection collection end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |