如何使用ruby访问JSON嵌套对象?

时间:2018-09-04 02:00:00

标签: json ruby

所以我有一个由嵌套对象组成的JSON文件,该对象遵循以下模式:parent -> child -> grand_child并看起来像以下内容:

//seed.json
    {
      "parent_0":[
        {
          "child_10":[
            {
              "grand_child_A":[],
              "grand_child_B":[],
              "grand_child_C":[]
            }
          ],
          "child_20":[],
          "child_30":[],
          "child_40":[]
        }
      ],

      "parent_1":[
        {
          "child_11":[
            {
              "grand_child_D":[],
              "grand_child_E":[],
              "grand_child_F":[]
            }
          ]
        }
      ]
    }

我想做的是列出存在于ruby的父母,child和grand_child中的所有对象。

通过执行以下操作,我可以使用parent做到这一点:

# seed.json

json = File.read('seed.json')
content = JSON.parse(json).keys

返回以下内容:

$ ruby seed.rb
"parent_0"
"parent_1"
$ 

我被困在那里...我想以相同的方式访问child_10并列出grand_child_Agrand_child_Bgrand_child_C的所有对象我确实访问并列出了parent_0 and parent_1,但不知道如何进行。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

一个选项:

require 'json'

json = File.read('seed.json')
content = JSON.parse(json)

parent = 'parent_0'
child = 'child_10'

content[parent].flat_map{ |e| e[child].flat_map { |ee| ee.keys} }

# => ["grand_child_A", "grand_child_B", "grand_child_C"]