首页 > 解决方案 > 解析嵌套哈希并迭代以创建带有输出的 ruby​​ 文件

问题描述

所以我试图迭代这个嵌套的哈希来创建一个步骤指南,我想创建一个包含信息的文件和输出文件,以将输出写成如下:

steps_guide elemento1 elemento2 elemento3

steps_guide elemento2 elemento3 elemento4

steps_guide elemento3 elemento4 elemento5

steps_guide elemento4 elemento5 elemento6

steps_guide 收音机氙气铝

steps_guide 氙气铝硼

有没有办法做到这一点?我尝试遍历哈希但未成功并使用 each_cons 进行迭代但仍然相同

你能帮助我吗?我真的坚持这个

这是我的嵌套哈希

_Data =[
    {
        "name": "script",
        "elements": [
            {
                "name": "unknown group",
                "headers": {
                    "map": {}
                },
                "agent": "",
                "bottom_comments": [],
                "checks": [
                    {
                        "title": "",
                        "field": "elemento1",
                        "value": "0",
                    },
                    {
                        "title": "",
                        "field": "elemento2",
                        "value": "0",
                    },
                    {
                        "title": "",
                        "field": "elemento3",
                        "value": "0",
                    },

                    {
                        "title": "",
                        "field": "elemento4",
                        "value": "0",
                    },
                    {
                        "title": "",
                        "field": "elemento5",
                        "value": "0",
                    },
                    {
                        "title": "",
                        "field": "elemento6",
                        "value": "1",
                    },
                    {
                        "title": "",
                        "field": "elemento7",
                        "value": "1",
                    },
                    {
                        "title": "",
                        "field": "elemento8",
                        "value": "1",
                    },
                    {
                        "title": "",
                        "field": "elemento9",
                        "value": "1",
                    },
                    {
                        "title": "",
                        "field": "elemento10",
                        "value": "0",

                    },
                    {
                        "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",
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

标签: rubyloopsdictionaryparsinghash

解决方案


each_cons是正确的使用方法。您可能只是遇到了麻烦,因为您的数据结构非常复杂。部分问题在于表结构的最后一部分是它自己的特殊结构。将它们分开处理。

all_checks = data[0][:elements][0][:checks]
checks = all_checks[0...-1] # all but the last one

checks.each_cons(3).each do |a, b, c|
  puts "steps_guide #{a[:field]} #{b[:field]} #{c[:field]}"
end

elementos = all_checks[-1][:elementos][0][:table]
elementos.each_cons(3).each do |a, b, c|
  puts "steps_guide #{a[:name]} #{b[:name]} #{c[:name]}"
end

可能会让您失望的一件事是,"title":在 Ruby 哈希中定义了一个名为的符号:title,而不是 JSON 中的字符串。


推荐阅读