我真的很努力使這個工作。通過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",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"collection"=>
[{"id"=>"57928212-724157634943457291",
"title"=>"Standard",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"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",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576296835355462",
"title"=>"D-er",
"description"=>""},
{"id"=>"721576294683541696",
"title"=>"D-rea",
"description"=>""},
{"id"=>"721576296843554852",
"title"=>"D-gdom",
"description"=>""},
{"id"=>"721576297104465912",
"title"=>"Day 4 - Gilr-walk",
"description"=>""},
{"id"=>"721576294710474644",
"title"=>
"Day 5 - Calif-uth",
"description"=>""},
{"id"=>"721576249710489442",
"title"=>"Day 6 - Si-untain",
"description"=>""},
{"id"=>"721576429834618028",
"title"=>
"Day 7 - Unive-za",
"description"=>""},
{"id"=>"721576249834637138",
"title"=>"Day 8 - Se-Park",
"description"=>""},
{"id"=>"721576249836419418",
"title"=>"Day 9 - Lego-Park",
"description"=>""},
{"id"=>"721576249851123596",
"title"=>"Day 10 - Kn-re City",
"description"=>""},
{"id"=>"721576298541700916",
"title"=>"Day 11 & 12 - Disn-sort",
"description"=>""},
{"id"=>"721576249851713058",
"title"=>"Day 13,14 & 15 - La-as",
"description"=>""}]},
{"id"=>"57928212-721547629866347760",
"title"=>"2 - Mi-10",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576294866337538",
"title"=>"Day 0 - Arr-rica",
"description"=>""},
{"id"=>"721576298468655454",
"title"=>"Day 1 - M-a",
"description"=>""},
{"id"=>"721576299707347598",
"title"=>"Day 2 - Adven-n",
"description"=>""},
{"id"=>"721576430011649024",
"title"=>"Day 3 - W-un",
"description"=>""},
{"id"=>"721576304034790528",
"title"=>"Day 4 - Sil-",
"description"=>""},
{"id"=>"721576300354520246",
"title"=>"Day 5 - St-eum",
"description"=>""},
{"id"=>"721576300443090072",
"title"=>"Day 6 - Si-uis",
"description"=>""},
{"id"=>"721576300443098290",
"title"=>"Day 7 - Ho-rld",
"description"=>""},
{"id"=>"721576300448416804",
"title"=>"Day 8 - Indi-ach",
"description"=>""},
{"id"=>"721576300448431390",
"title"=>"Day 9 - -ca",
"description"=>""},
{"id"=>"721457629997482351",
"title"=>
"Day 10 - Mount O-eads",
"description"=>""},
{"id"=>"721576304059600702",
"title"=>"Day 11 - Vall-",
"description"=>""}]},
{"id"=>"57928212-721457630658165668",
"title"=>"3 - Intim-010",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576341693409808",
"title"=>
"Day 1 - Gre-n City",
"description"=>""},
{"id"=>"721576306547898798",
"title"=>"Day 1 - C-s",
"description"=>""},
{"id"=>"721576306924436584",
"title"=>"Day 2 - -d",
"description"=>""},
{"id"=>"721547630699845912",
"title"=>"Day 3 - Ran-vities",
"description"=>""},
{"id"=>"721576304714758818",
"title"=>"Day 4 - Lo-urg",
"description"=>""},
{"id"=>"721576304717785454",
"title"=>"Day 5 - Bu-urg",
"description"=>""},
{"id"=>"721576304717785576",
"title"=>"Day 6 - Kin-ion",
"description"=>""}]},
{"id"=>"57928212-742157631693570817",
"title"=>"4 - Bes-12",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576316493011733",
"title"=>
"Day 0 - Early -orld Park",
"description"=>""},
{"id"=>"721576316934409808",
"title"=>
"Day 1 - Grea-ity",
"description"=>""},
{"id"=>"721576431698474564",
"title"=>"Day 2 - Shijin-rk",
"description"=>""},
{"id"=>"721576341703216195",
"title"=>
"Day 3 - Happ-rk",
"description"=>""},
{"id"=>"721574631713251068",
"title"=>"Day 4 - Victo-g",
"description"=>""},
{"id"=>"721576314761492087",
"title"=>"Day 5 - Floral-ark",
"description"=>""},
{"id"=>"721576318148565932",
"title"=>"Day 6 - H-du",
"description"=>""},
{"id"=>"721576318148581382",
"title"=>"Day -ry",
"description"=>""},
{"id"=>"721576318419272104",
"title"=>
"Day 8 - Ha-Park",
"description"=>""},
{"id"=>"721576314820243661",
"title"=>
"Day 9 - Sha-ruise",
"description"=>""},
{"id"=>"721574631872193783",
"title"=>
"Day 10 - Fisherma-ervatory",
"description"=>""},
{"id"=>"721574631874073880",
"title"=>
"Day 11- Gongqin-ark",
"description"=>""},
{"id"=>"721576318474794697",
"title"=>"Day 12 - Hap-ark",
"description"=>""},
{"id"=>"721576318940558319",
"title"=>"Day 13 - -",
"description"=>""},
{"id"=>"721576319544111677",
"title"=>
"Day 14 - G-World",
"description"=>""},
{"id"=>"721576319624210803",
"title"=>
"Day 15 - Chi-or",
"description"=>""},
{"id"=>"721576319628749339",
"title"=>
"Day 16 - Kn-rld",
"description"=>""},
{"id"=>"721576319751048564",
"title"=>"Day 17 - Ha-hen",
"description"=>""},
{"id"=>"721576319749243775",
"title"=>"Day 18 - O-eing",
"description"=>""},
{"id"=>"721576319765947399",
"title"=>"Day 19 - Dis-ong",
"description"=>""}]},
{"id"=>"57928212-721576434943433385",
"title"=>"5 - T-13",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576349908483894",
"title"=>"Day 1 - Tai-ng",
"description"=>""},
{"id"=>"721576349954099233",
"title"=>"Day 2 - -",
"description"=>""},
{"id"=>"721576350042484738",
"title"=>"Day 3 - J-orld",
"description"=>""},
{"id"=>"721576350594662914",
"title"=>
"Day 4 - For-t",
"description"=>""},
{"id"=>"721576350545445863",
"title"=>"Day 5-dise",
"description"=>""},
{"id"=>"721576352944144798",
"title"=>
"Day 6 - L-na",
"description"=>""}]},
{"id"=>"57928212-721576435094962919",
"title"=>"6 - Japan 2013",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576350944001201",
"title"=>"Day 1 - Fli-dium",
"description"=>""},
{"id"=>"721576350494923653",
"title"=>"Day 2 - Tok-a",
"description"=>""},
{"id"=>"721576350497502859",
"title"=>"Day 3 - Tobu Zoo",
"description"=>""},
{"id"=>"721576351430344700",
"title"=>"Day 4 - Uni-an",
"description"=>""},
{"id"=>"721457635131070810",
"title"=>"Day 5 - Hira-mple",
"description"=>""},
{"id"=>"721576351444725534",
"title"=>"Day 6 - Yo-adise",
"description"=>""},
{"id"=>"721576351454178145",
"title"=>"Day 7 - Nag-nd",
"description"=>""},
{"id"=>"721547635164257344",
"title"=>"Day 8 - Hok-oro",
"description"=>""},
{"id"=>"721576354182539619",
"title"=>"Day 9 - Ru-ort",
"description"=>""},
{"id"=>"721576351472948421",
"title"=>"Day 10 - Jo-ea",
"description"=>""},
{"id"=>"721576351894974362",
"title"=>"Day 11 - -d",
"description"=>""},
{"id"=>"721576352035465038",
"title"=>"Day 12- Tok-kitori",
"description"=>""},
{"id"=>"721576352574508275",
"title"=>"Day 13- To-a",
"description"=>""},
{"id"=>"721576352746739360",
"title"=>"Day 14 - Tok-ea",
"description"=>""},
{"id"=>"721576354268544001",
"title"=>"Day 15 - --ea",
"description"=>""}]}]},
{"id"=>"57928212-721574628668300643",
"title"=>"Days out",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"collection"=>
[{"id"=>"57928212-721457628668352769",
"title"=>"One off's",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"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)",
"description"=>""},
{"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)",
"description"=>""}]},
{"id"=>"57928212-721574628668280287",
"title"=>"Theme Parks",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"collection"=>
[{"id"=>"57928212-721457634949768308",
"title"=>"TThisrk",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576334256718298",
"title"=>
"TThisP)",
"description"=>""}]},
{"id"=>"57928212-721576429626109372",
"title"=>"PlThisl",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"7215762945459430821",
"title"=>"PThis11",
"description"=>"(Neil T, Rick M, Jackie DM)"}]},
{"id"=>"57928212-721576249991000745",
"title"=>"GuThisld",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576296244407020",
"title"=>"GThis011",
"description"=>
"(NeiThiseorge)"}]},
{"id"=>"57928212-721576294990999301",
"title"=>"FThisd",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576294625410346",
"title"=>"FlThis0",
"description"=>"(NThis)"}]},
{"id"=>"57928212-721457628668340547",
"title"=>"DrThisor",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576294638932742",
"title"=>"DraThis010",
"description"=>"(NThisW)"}]},
{"id"=>"57928212-721547628668287225",
"title"=>"AltThisrs",
"description"=>"",
"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)",
"description"=>""},
{"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",
"description"=>"(This)"},
{"id"=>"721576295594429835",
"title"=>"This 29th-31st Oct 2009",
"description"=>"(ThisF)"},
{"id"=>"721576291947499268",
"title"=>
"Behi-l 2006",
"description"=>"(This)"},
{"id"=>"721576295411694365",
"title"=>"Day 2010 - 21st Jun 2010",
"description"=>"This)"}]}]}]},
{"id"=>"57928212-721457628985775057",
"title"=>"Yearly Events",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"collection"=>
[{"id"=>"57928212-721576429836230144",
"title"=>"This",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576299818309211",
"title"=>"Here StThisees",
"description"=>""},
{"id"=>"721576296173454860",
"title"=>"Thisats",
"description"=>""}]},
{"id"=>"57928212-721576258985777547",
"title"=>"Birthdays",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"7215762899995365613",
"title"=>"This12",
"description"=>""}]}]},
{"id"=>"57928212-721576298356236274",
"title"=>"Misc",
"description"=>"",
"iconlarge"=>"/images/collection_default_l.gif",
"iconsmall"=>"/images/collection_default_s.gif",
"set"=>
[{"id"=>"721576295511800621",
"title"=>"This",
"description"=>""},
{"id"=>"721576295391565747",
"title"=>"This",
"description"=>""}]}]}]},
"stat"=>"ok"}
我真的可以做一些這方面的幫助。我認爲這是數組和哈希的多維方面,以及如何創建可以循環以添加集合的東西。現在我需要忽略這些設置。套件將在稍後添加。
UPDATE:
被玩弄這種試圖慢慢找出散列的每一個部分是與具備以下條件:
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
正在恢復:
字符串<對象
陣列<對象
我可以訪問數組部分,所以我可以繼續迭代,因爲我得到的所有信息都是我無法執行每個字符串(這是有道理的)。
任何想法?
你看到了什麼錯誤?你要做的方法應該可以工作,但我猜測可能會出現這樣的情況:散列被當作數組處理,反之亦然,這會導致錯誤。因此,這確實是一項任務,可以驗證您在每個步驟中處理的對象類型,以便收集您要查找的數據。 – Puhlze
由於缺少''',你的API響應有一個解析錯誤,可能是:''description「=>這個)」},'。複製/粘貼錯誤? –
是的,這是一個複製粘貼錯誤。現在修復。有沒有一種方法可以減少API結果,以便我能更清楚地瞭解它的層次結構是如何設置的,這樣我就可以在邏輯上逐步完成它了? – rctneil