sintassi di input e output JSON

Conoscere la sintassi di input e output di 'JSON.

La sintassi di input/output per i tipi di dati JSON è quella specificata in RFC 7159.

Esempi di espressioni " json e " jsonb valide:
  • Valore scalare/primitivo semplice

    I valori primitivi possono essere numeri, stringhe quotate, true, false o null.

    SELECT '5'::json;
  • Array di zero o più elementi (gli elementi non devono necessariamente essere dello stesso tipo)
    SELECT '[1, 2, "foo", null]'::json;
  • Oggetto contenente coppie di chiavi e valori
    Si noti che le chiavi degli oggetti devono sempre essere stringhe quotate.
    SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json;
  • Gli array e gli oggetti possono essere annidati in modo arbitrario
    SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json;
Quando si immette un valore " JSON e lo si stampa senza ulteriori elaborazioni, " json riproduce lo stesso testo immesso. jsonb non conserva i dettagli semanticamente significativi (ad esempio gli spazi bianchi).
SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json;
                      json                       
-------------------------------------------------
 {"bar": "baz", "balance": 7.77, "active":false}
(1 row)

SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::jsonb;
                      jsonb                       
--------------------------------------------------
 {"bar": "baz", "active": false, "balance": 7.77}
(1 row)
Nota: in 'jsonb, i numeri vengono stampati in base al comportamento del tipo numerico sottostante. I numeri inseriti con la notazione " E verranno stampati senza di essa. jsonb conserva gli zeri frazionari finali, anche se questi sono semanticamente insignificanti per scopi quali i controlli di uguaglianza.
Esempio:
SELECT '{"reading": 1.230e-5}'::json, '{"reading": 1.230e-5}'::jsonb;
         json          |          jsonb          
-----------------------+-------------------------
 {"reading": 1.230e-5} | {"reading": 0.00001230}
(1 row)