我在JSON数据类型(Postgres 9.3)下存储了Postgres中的JSON文档,我需要以递归方式从树中收集密钥名称.
例如,给定这个JSON树
{
"files": {
"folder": {
"file1": {
"property": "blah"
},
"file2": {
"property": "blah"
},
"file3": {
"property": "blah"
},
"file4": {
"property": "blah"
}
}
},
"software": {
"apt": {
"package1": {
"version": 1.2
},
"package2": {
"version": 1.2
},
"package3": {
"version": 1.2
},
"package4": {
"version": 1.2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想提取类似[file1,file2,file3,file3,package1,package2,package3,package4]的东西
基本上只是我可以用于文本搜索索引的键列表.
我知道我可以使用类似的东西获得最外层对象的键列表
SELECT DISTINCT(json_object_keys(data))
Run Code Online (Sandbox Code Playgroud)
而且我知道可以用类似的东西递归地爬过树
WITH RECURSIVE data()
Run Code Online (Sandbox Code Playgroud)
但我把两者放在一起很麻烦.
有人可以帮忙吗?