2013-05-07 2 views
0

따라서 내 previous question의 확장자로. 나는 그 문제를 발견했다. 반환 된 값 은 해시가이지만 매우 깊습니다.Ruby 딥 해시에 액세스

@reddit.get_listing().fetch('data',{}).fetch('children',{}).each do |child| 
    puts child['data'] 
end 
그래서

그 인쇄 :

{"domain"=>"i.imgur.com", "banned_by"=>nil, "media_embed"=>{}, "subreddit"=>"pics", "selftext_html"=>nil, "selftext"=>"", "likes"=>nil, "link_flair_text"=>nil, "id"=>"1dtlho", "clicked"=>false, "title"=>"It almost looks like they're holding up a photograph", "media"=>nil, "score"=>3866, "approved_by"=>nil, "over_18"=>false, "hidden"=>false, "thumbnail"=>" http://f.thumbs.redditmedia.com/m2l6DYE1-gSVgpFk.jpg ", "subreddit_id"=>"t5_2qh0u", "edited"=>false, "link_flair_css_class"=>nil, "author_flair_css_class"=>nil, "downs"=>10684, "saved"=>false, "is_self"=>false, "permalink"=>"/r/pics/comments/1dtlho/it_almost_looks_like_theyre_holding_up_a/", "name"=>"t3_1dtlho", "created"=>1367907910.0, "url"=>" http://i.imgur.com/M9BVP7W.jpg ", "author_flair_text"=>nil, "author"=>"kosen13", "created_utc"=>1367879110.0, "ups"=>14550, "num_comments"=>308, "num_reports"=>nil, "distinguished"=>nil}},

하지만 지금은 접근 할 필요가 그래서 기본적으로이 내가 그것을 액세스하려고하는 방법이다

{"kind"=>"Listing", "data"=>{"modhash"=>"5g8l2yr5ld67bcab9972a4fbf072381e422fea31c6ebf45cb5", "children"=>[{"kind"=>"t3", "data"=>{"domain"=>"i.imgur.com", "banned_by"=>nil, "media_embed"=>{}, "subreddit"=>"pics", "selftext_html"=>nil, "selftext"=>"", "likes"=>nil, "link_flair_text"=>nil, "id"=>"1dtlho", "clicked"=>false, "title"=>"It almost looks like they're holding up a photograph", "media"=>nil, "score"=>3866, "approved_by"=>nil, "over_18"=>false, "hidden"=>false, "thumbnail"=>" http://f.thumbs.redditmedia.com/m2l6DYE1-gSVgpFk.jpg ", "subreddit_id"=>"t5_2qh0u", "edited"=>false, "link_flair_css_class"=>nil, "author_flair_css_class"=>nil, "downs"=>10684, "saved"=>false, "is_self"=>false, "permalink"=>"/r/pics/comments/1dtlho/it_almost_looks_like_theyre_holding_up_a/", "name"=>"t3_1dtlho", "created"=>1367907910.0, "url"=>" http://i.imgur.com/M9BVP7W.jpg ", "author_flair_text"=>nil, "author"=>"kosen13", "created_utc"=>1367879110.0, "ups"=>14550, "num_comments"=>308, "num_reports"=>nil, "distinguished"=>nil}},

: 그래서 여기에 어떤 방법 인쇄입니다 도메인 및 인쇄 제목 그래서이 같은 것을 시도 :

@reddit.get_listing().fetch('data',{}).fetch('children',{}).fetch('data', {}).each do |child| 
    puts child['title'] 
end 

하지만이 오류가 발생합니다 : :in 'fetch': can't convert String into Integer

해시의 마지막 부분을 얻는 방법에 대한 아이디어가 있으십니까?

+1

나는 당신의 질문을 이미 보았습니다 만, 어쨌든 팁이 있습니다. 모든 fetch 문을 함께 묶어 여러 문으로 나누십시오. 그렇게하면 실패 할 경우 오류 메시지가 실제로 오류의 원인이되는 행을 가리 킵니다. (또한 코드를 더 읽기 쉽게 만듭니다.) –

답변

2

fetch을 배열에 사용할 수 없습니다. 이것을 시도하십시오 :

@reddit.get_listing().fetch('data',{}).fetch('children',{}).each do |child| 
    puts child['data']['title'] 
end 
+0

와우 ... 나는 이걸 시도했는지 확신 할 수 없었다. 나는 데이터와 제목을 틀어 놓았어야한다. 이 덕분에, 고마워! – Richard

+0

@ 리차드 : 예. 기꺼이 도와주세요. – Linuxios

관련 문제