Retornando JSON no PostgreSQL

7 years ago by Jaime Neto

Uma funcionalidade muito útil do banco de dados PostgreSQL, e que muita gente não conhece, é transformar um conjunto de dados no formato JSON. Esse formato é muito utilizado atualmente para comunicação entre serviços, alimentação de dados em grid, e várias outras funcionalidades. Alguns bancos usam funções que convertem os registros para JSON, mas o PostgreSQL tem uma forma muito mais prática, como veremos nos exemplos a seguir:

Digamos que eu queira a lista de posts de um site para ser exibida em um grid. Se fizer a query seguinte, eu terei essa lista como result set:

SELECT * FROM posts

Se eu precisar que todos os dados venham numa mesma coluna, eu ainda posso pôr o alias da tabela na lista de colunas que você deseja retornar o resultado, assim:

SELECT p FROM posts AS p

Mas se o grid precisa receber essa lista no formato JSON, então eu teria que converter os resultados antes de passar para o grid, ou posso fazer isso utilizando a função row_to_json():

SELECT row_to_json(p) FROM posts AS p

Agora vamos melhorar essa query. Eu quero fazer uma consulta normal nos posts, e quero trazer na mesma consulta os dados do usuário que cadastrou cada post numa única coluna JSON:

SELECT p.*, row_to_json(u) AS user_data
FROM posts AS p
JOIN users AS u ON u.id = p.user_id

Essa funcionalidade merece ser explorada mais afundo nos dias de hoje em que o JSON vem ganhando tanto espaço, substituindo inclusive o XML, que antes dominava essa área.

^__~

Comments