Use o
->>
operador para recuperar o campo json. Isso deve funcionar e retornar
null
(como em, sem valor) corretamente para ambos:select ('{"id": null}'::json->>'id')::text
select ('{"id": null}'::json->>'id')::integer
Eu criei um violino que o demonstra
PS:para obter a string
"null"
, você precisaria definir seu json como:{"id": "null"}