to_json
je označeno jako STRICT
funkce, je to střední hodnota - vrací NULL, když je některý parametr NULL. Nejsem si jistý, zda je to správná implementace, možná je to chyba PostgreSQL.
Aktualizace:Po diskuzi na Postgres' mailing listu to není chyba, ale vlastnost - situace není jednoduchá, takže oba jazyky podporují NULL, ale chování NULL se v kterémkoli z těchto jazyků trochu liší. Je těžké rozhodnout, zda SQL NULL musí být okamžitě transformován na JSON NULL a ztracené SQL se chovat okamžitě. Pokud potřebujete jiné chování, můžete použít funkci SQL:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;