Tema SQL
row_to_json / to_jsonb (PostgreSQL)
Serializa una fila completa (tipo composite/ROW) a JSON o JSONB. Complemento de jsonb_build_object cuando ya tienes un ROW o una subconsulta.
Descripción
row_to_json(t.*) convierte cada columna en clave con opción de pretty print. to_jsonb elimina espacios y permite operadores jsonb. Útil con (SELECT …) subconsultas correlacionadas. Evita enumerar manualmente cada campo. Para muchas filas json_agg(row_to_json(t)) construye arrays JSON en SQL.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
SELECT row_to_json(t) FROM (SELECT id, nombre FROM usuarios WHERE id = 1) t;
SELECT to_jsonb(t) FROM cliente t;
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- json_agg
- Agrega filas json en array.
- MySQL
- JSON_OBJECTAGG / manual.
Ejemplos
Ejemplo 1
SELECT json_agg(row_to_json(s))
FROM (
SELECT id, titulo FROM posts ORDER BY id LIMIT 10
) s;
SELECT to_jsonb(c.*) FROM clientes c WHERE c.id = 99;
Ejemplo 2
SELECT json_build_object('ok', true, 'rows', (SELECT COUNT(*) FROM pedidos)) AS payload;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.