PostgreSQL 9.3: Generare valori JSON

PostgreSQL 9.2 ha introdotto il supporto alla memorizzazione all’interno del database di dati di tipo JSON (JavaScript Object Notation), formato ideato per lo scambio di dati in applicazioni client-server. PostgreSQL 9.3 introduce importanti funzioni native per la creazione e la manipolazione di dati JSON, oltre a operatori per l’accesso a informazioni contenute in dati JSON.

Per quanto riguarda la generazione di valori JSON, PostgreSQL 9.3 introduce due funzioni:

  • to_json(anyelement): converte un valore in JSON, utilizzando il casting oppure la rappresentazione testuale a seconda del tipo di dato
  • json_agg(record): aggrega un set di record come un array di oggetti JSON

Il seguente esempio mostra la funzione to_json, visualizzando la serie dei primi 10 numeri interi e il rispettivo quadrato tramite una query WITH:

WITH a AS (
 SELECT n, n^2 AS q FROM generate_series(1, 10) n
)
SELECT to_json(a) AS json FROM a;

Il risultato è un insieme di record (10 per la precisione), ciascuno rappresentato da un oggetto JSON composto da due membri con chiave n e q:

       json
------------------
 {"n":1,"q":1}
 {"n":2,"q":4}
 {"n":3,"q":9}
 {"n":4,"q":16}
 {"n":5,"q":25}
 {"n":6,"q":36}
 {"n":7,"q":49}
 {"n":8,"q":64}
 {"n":9,"q":81}
 {"n":10,"q":100}
(10 rows)

Il successivo esempio applica la funzione aggregata json_agg, alla query precedente:

WITH a AS (
 SELECT n, n^2 AS q FROM generate_series(1, 10) n
)
SELECT json_agg(a) AS json FROM a;

Il risultato è una rappresentazione sintetica di un singolo valore JSON composto da un array di oggetti JSON con caratteristiche simili al precedente esempio:

        json
--------------------
 [{"n":1,"q":1},   +
  {"n":2,"q":4},   +
  {"n":3,"q":9},   +
  {"n":4,"q":16},  +
  {"n":5,"q":25},  +
  {"n":6,"q":36},  +
  {"n":7,"q":49},  +
  {"n":8,"q":64},  +
  {"n":9,"q":81},  +
  {"n":10,"q":100}]
(1 row)

Inutile sottolineare l’impatto di queste nuove funzionalità nello sviluppo, in particolare, di applicazioni web e mobile che memorizzano e recuperano dati JSON direttamente da PostgreSQL e le veicolano, ad esempio, con JQuery. Al prossimo articolo sulle novità di PostgreSQL 9.3!

This Post Has 0 Comments

Leave A Reply