Recoge claves JSON recursivas en Postgres

Tengo documentos JSON almacenados en Postgres bajo el tipo de datos JSON (Postgres 9.3) y necesito recolectar recursivamente los nombres de las claves en el árbol.

Por ejemplo, dado este árbol 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
    }
  }
 }
}

Me gustaría extraer algo como [archivo1, archivo2, archivo3, archivo3, paquete1, paquete2, paquete3, paquete4]

Básicamente solo una lista de claves que puedo usar para un índice de búsqueda de texto.

Sé que puedo obtener una lista de claves en la mayoría de los objetos externos usando algo como

SELECT DISTINCT(json_object_keys(data))

Y sé que es posible escalar recursivamente a través del árbol usando algo como

WITH RECURSIVE data()

Pero estoy teniendo problemas para poner los dos juntos.

¿Alguien puede ayudar?

Respuestas a la pregunta(3)

Su respuesta a la pregunta