Собирать рекурсивные ключи 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()

но у меня проблемы с соединением двух.

Кто-нибудь может помочь?

Ответы на вопрос(1)

Ваш ответ на вопрос