首页 > 解决方案 > ruby 从嵌套数组中提取数据

问题描述

如何从嵌套哈希中访问深度键值?

我想提取 _Data 中的值,我想提取 data[] 中的字段和大小,像 fieldvalue_sizevalue 一样打印

elemento3_3

我有这段代码,但只得到了所有的数据键和值,我在进行这个迭代时遇到了一些麻烦,我是 ruby​​ 的新手

_Data[0][:checks].each do |intera|

puts "#{itera[:data]}

end

这是嵌套数组

   _Data =[
    {
      
           
                "agent": "",
                "bottom_comments": [],
                "checks": [
                    {
                        "title": "new",
                        "data": [{

                            "field": "elemento1",
                            "value": "0",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento2",
                            "value": "0",
                            "size":"4",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento3",
                            "value": "0",
                            "size":"3",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento4",
                            "value": "0",
                            "size":"17",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento5",
                            "value": "0",
                            "size":"12",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento6",
                            "value": "0",
                            "size":"19",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento7",
                            "value": "0",
                            "size":"9",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento8",
                            "value": "0",
                            "size":"10",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento11",
                            "value": "0",
                            "size":"14",
                            }
                        ]
                    },
                    {
                        "title": "new",
                        "data": [{
                            
                            "field": "elemento19",
                            "value": "0",
                            "size":"14",
                            }
                        ]
                    },
                    {
                        "type": "condiciones",
                        "elementos": [
                            {
                                
                                "table": [
                                    {
                                        "title": "",
                                        "name": "radio",
                                    },
                                    {
                                        "title": "",
                                        "name": "xenon",
                                    },
                                    {
                                        "title": "",
                                        "name": "aluminio",
                                    },
                                    {
                                        "title": "",
                                        "name": "boro",
                                    },
                                    {
                                        "title": "",
                                        "name": "oro",
                                    },
                                    {
                                        "title": "",
                                        "name": "bromo",
                                    },
                                    {
                                        "title": "",
                                        "name": "oxigeno",
                                    }
                                ]
                            }
                        ]
                    }

                ]
            
          }
        ]

标签: rubyloopsparsing

解决方案


这是打印值(如果存在)的一行代码。让我知道有关所使用的任何方法的任何进一步细节是否会有所帮助。

_Data[0][:checks].pluck(:data).flatten.compact.each{|i| puts "#{i[:field]}_#{i[:size]}" if i[:field] && i[:size]}


推荐阅读