JSONsolo PostgreSQL

JSONB_OBJECT_KEYS

Devuelve las claves de un objeto JSON: una fila por clave.

Sintaxis

JSONB_OBJECT_KEYS(<objeto json>)

Solo los nombres de las claves del nivel superior, sin valores. Útil para saber qué campos aparecen realmente en una columna JSON o comprobar que no ha llegado nada de más.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Las claves de un objeto
SELECT JSONB_OBJECT_KEYS('{"color": "black", "storage": 256, "wireless": true}') AS key;
key
color
storage
wireless
Cuántas claves
SELECT COUNT(*) AS key_count
FROM JSONB_OBJECT_KEYS('{"color": "black", "storage": 256, "wireless": true}');
key_count
3
Qué campos tiene un registro de la tabla
SELECT JSONB_OBJECT_KEYS(TO_JSONB(e)) AS column_name
FROM employees e
WHERE e.name = 'Emma';
column_name
name
bonus
phone
salary
department

TO_JSONB(e) convierte una fila de la tabla en un objeto, y JSONB_OBJECT_KEYS enumera sus claves, es decir, los nombres de las columnas.

Ten en cuenta

Solo el nivel superior: las claves de los objetos anidados no se incluyen.

Con un array, el error cannot call jsonb_object_keys on an array.

Las claves no salen en el orden en que se escribieron: jsonb las guarda ordenadas, las más cortas primero.

Para comprobar una sola clave es más sencillo el operador ?: data ? 'color' da true o false.