加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 通过Flickr的API结果循环

发布时间:2020-12-17 02:21:50 所属栏目:百科 来源:网络整理
导读:我真的很努力让这个工作. 我正在查询Flickr API,它返回了一组数组和哈希值,我可以循环将数据添加到我的应用程序中. 我已经开始编写一些代码来迭代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返回:

String < Object

Array < Object

我可以访问数组部分,所以我可以继续迭代,因为我得到的是我无法执行.每个字符串(这是有道理的).

有任何想法吗?

解决方法

是的,那令人困惑.你需要知道的是

>顶级集合数组位于树[“集合”] [“集合”]
>集合是带有每个属性键的哈希值(id,标题,描述等)
>集合可能有一个名为collection(而不是集合)的键,其值为子集合数组

现在,根据这些指导原则,我们可以编写代码来遍历树.我们递归调用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读