PostgreSQL 9.2: supporto JSON

JSON, acronimo di JavaScript Object Notation, è un formato ideato per lo scambio di dati in applicazioni client-server.

PostgreSLQ 9.2 introduce il supporto al tipo di dato JSON.

Per verificarne la presenza, è sufficiente digitare da psql il comando \dTS pg_catalog.json.

Un valore di tipo JSON è in grado di accettare soltanto stringhe JSON valide. Inserire una stringa JSON non valida in un dato di tipo JSON genera un’eccezione.

Vi sono inoltre due funzioni per la conversione a JSON di array e righe, chiamate rispettivamente array_to_json e row_to_json.

L’esempio sottostante mostra come sia possibile convertire in JSON una riga del catalogo di PostgreSQL, in particolare quella che contiene informazioni circa il database postgres.

select row_to_json(d) from pg_database d WHERE datname='postgres';

Il risultato sarà qualcosa di simile a:

       row_to_json

 -----------------------------------------------------------------------------------------------------------
 -----------------------------------------------------------------------------------------------------------
 -------------------------
  {"datname":"postgres","datdba":10,"encoding":6,"datcollate":"en_US.UTF-8","datctype":"en_US.UTF-8","datist
emplate":false,"datallowconn":true,"datconnlimit":-1,"datlastsysoid":12002,"datfrozenxid":"671","dattablesp
ace":1663,"datacl":null}
 (1 row)

Abbastanza illeggibile, vero?

Per avere una formattazione più carina, basterà aggiungere un parametro booleano impostato a True alla funzione row_to_json:

select row_to_json(d, 'True') from pg_database d WHERE datname='postgres';

Che restituirà qualcosa di simile a:

         row_to_json
------------------------------
 {"datname":"postgres",      +
  "datdba":10,               +
  "encoding":6,              +
  "datcollate":"en_US.UTF-8",+
  "datctype":"en_US.UTF-8",  +
  "datistemplate":false,     +
  "datallowconn":true,       +
  "datconnlimit":-1,         +
  "datlastsysoid":12002,     +
  "datfrozenxid":"671",      +
  "dattablespace":1663,      +
  "datacl":null}
(1 row)

Decisamente meglio.

Uno dei vantaggi del formato JSON è rappresentato dall’elevato numero di applicazioni esistenti che lo supportano. Risulterà quindi estremamente semplice convertire una stringa JSON in formati diversi, ad esempio una tabella HTML. Inoltre, sarà interessante valutare sviluppi futuri di questa funzionalità insieme alla tecnologia websocket di HTML5.

Per adesso il supporto a JSON è limitato. Mancano infatti funzioni per la visita di singole coppie chiave/valore, anche se sono state poggiate le basi per evoluzioni future.

This Post Has 0 Comments

Leave A Reply