我从JSON数据转换了一个Ruby哈希,如下所示:
{ :query => {
:pages => {
:"743958" => {
:pageid => 743958,
:ns => 0,
:title => "Asterix the Gaul",
:revisions => [ {
:contentformat => "text/x-wiki",
:contentmodel => "wikitext",
:* => "{{Cleanup|date=April 2010}}\n{{Infobox graphic novel\n<!--Wikipedia:WikiProject Comics-->...所有的好东西都在revisions数组中,然后是Infobox哈希。
我遇到的问题是如何处理Infobox哈希。我似乎无法做到这一点。对于其他条目,pages和pageid散列可能不存在,当然ID会有所不同。
我尝试过各种方法,比如.map、.select、.find、.include?等等,但都没有用,因为它们不是递归的,不会进入每个键和数组。
我在StackOverflow中看到的所有答案都是在一维数组中按名称获得值,这是没有帮助的。
我如何从这里获得Infobox数据?
发布于 2014-09-08 14:29:43
这就是你要找的吗?
pp data
=> {:query=> {:pages=>
{:"743958"=>
{:pageid=>743958,
:ns=>0,
:title=>"Asterix the Gaul",
:revisions=>
[{:contentformat=>"text/x-wiki",
:contentmodel=>"wikitext",
:*=>"{{Cleanup..."}]}}}}
# just return data from the first revisionb
data[:query][:pages].map{|page_id,page_hash| page_hash[:revisions].first[:"*"]}
=> ["{{Cleanup..."]
# get data from all revisions
data[:query][:pages].map{|page_id,page_hash| page_hash[:revisions].map{|revision| revision[:"*"] }}.flatten
=> ["{{Cleanup..."] https://stackoverflow.com/questions/25722708
复制相似问题