Собирать рекурсивные ключи JSON в Postgres
У меня есть документы JSON, хранящиеся в Postgres под типом данных JSON (Postgres 9.3), и мне нужно рекурсивно собирать имена ключей по дереву.
Например, учитывая это дерево 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
}
}
}
}
Я хотел бы извлечь что-то вроде [файл1, файл2, файл3, файл3, пакет1, пакет2, пакет3, пакет4]
В основном просто список ключей, которые я могу использовать для индекса текстового поиска.
Я знаю, что могу получить список ключей на большинстве внешних объектов, используя что-то вроде
SELECT DISTINCT(json_object_keys(data))
И я знаю, что можно рекурсивно лазить по дереву, используя что-то вроде
WITH RECURSIVE data()
но у меня проблемы с соединением двух.
Кто-нибудь может помочь?