to_json
är markerad som STRICT
funktion, det betyder - returnerar NULL när någon parameter är NULL. Jag är inte säker på om det är korrekt implementering, kanske är det PostgreSQL-bugg.
Uppdatering:Efter diskussion på Postgres e-postlista är detta inte felet, utan funktionen - situationen är inte enkel på grund av faktum, så båda språken stöder NULL, men beteendet hos NULL är lite annorlunda på något av dessa språk. Det är svårt att avgöra om SQL NULL omedelbart måste omvandlas till JSON NULL och förlora en SQL-funktion omedelbart. Om du behöver ett annat beteende kan du använda en SQL-funktion:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;