首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby在转换后的散列JSON数组中的名称

Ruby在转换后的散列JSON数组中的名称
EN

Stack Overflow用户
提问于 2014-09-08 10:58:12
回答 1查看 1.4K关注 0票数 2

我从JSON数据转换了一个Ruby哈希,如下所示:

代码语言:javascript
复制
{ :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哈希。我似乎无法做到这一点。对于其他条目,pagespageid散列可能不存在,当然ID会有所不同。

我尝试过各种方法,比如.map.select.find.include?等等,但都没有用,因为它们不是递归的,不会进入每个键和数组。

我在StackOverflow中看到的所有答案都是在一维数组中按名称获得值,这是没有帮助的。

我如何从这里获得Infobox数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 14:29:43

这就是你要找的吗?

代码语言:javascript
复制
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..."] 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25722708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档