Utilisez le ->>
opérateur pour récupérer le champ json.
Cela devrait fonctionner et renvoyer null
(comme dans, pas de valeur) correctement pour les deux :
select ('{"id": null}'::json->>'id')::text
select ('{"id": null}'::json->>'id')::integer
J'ai fabriqué un violon qui le démontre
PS :pour obtenir la chaîne "null"
, vous devez définir votre json comme :{"id": "null"}