所以我有一个由嵌套对象组成的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_A
,grand_child_B
,grand_child_C
的所有对象我确实访问并列出了parent_0 and parent_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"]