to_json
is gemarkeerd als STRICT
functie, het is gemeen - NULL retourneren wanneer een parameter NULL is. Ik weet niet zeker of het de juiste implementatie is, misschien is het een PostgreSQL-bug.
Update:na discussie over de mailinglijst van Postgres is dit niet de bug, maar een functie - de situatie is niet eenvoudig, dus beide talen ondersteunen NULL, maar het gedrag van NULL verschilt een beetje van deze talen. Het is moeilijk om te beslissen of SQL NULL onmiddellijk moet worden getransformeerd naar JSON NULL en een SQL-gedrag onmiddellijk verloren gaat. Als je ander gedrag nodig hebt, kun je een SQL-functie gebruiken:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;