Sintaxis de entrada y salida de JSON

Información sobre la sintaxis de entrada y salida de JSON.

La sintaxis de entrada/salida para los tipos de datos JSON se especifica en la RFC 7159.

Ejemplos de expresiones json y jsonb válidas:
  • Valor primitivo/escalar simple

    Los valores primitivos pueden ser números, cadenas entrecomilladas, true, false o null.

    SELECT '5'::json;
  • Matriz de cero o más elementos (no hace falta que los elementos sean del mismo tipo)
    SELECT '[1, 2, "foo", null]'::json;
  • Objeto que contiene pares de claves y valores
    Tenga en cuenta que las claves de objeto siempre deben estar entre comillas.
    SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json;
  • Las matrices y los objetos se pueden anidar arbitrariamente
    SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json;
Cuando se introduce un valor JSON y luego se imprime sin ningún proceso adicional, json genera el mismo texto que se ha especificado. jsonb no conserva detalles semánticamente insignificantes (por ejemplo, espacios en blanco).
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: En ' jsonb' , los números se imprimen según el comportamiento del tipo numérico subyacente. Los números especificados con la notación E se imprimirán sin él. jsonb conserva los ceros fraccionarios finales a pesar de que son semánticamente insignificantes para fines como, por ejemplo, las comprobaciones de igualdad.
Ejemplo:
SELECT '{"reading": 1.230e-5}'::json, '{"reading": 1.230e-5}'::jsonb;
         json          |          jsonb          
-----------------------+-------------------------
 {"reading": 1.230e-5} | {"reading": 0.00001230}
(1 row)