to_json
ist als STRICT
gekennzeichnet Funktion, es ist gemein - NULL zurückzugeben, wenn irgendein Parameter NULL ist. Ich bin mir nicht sicher, ob es sich um eine korrekte Implementierung handelt, vielleicht ist es ein PostgreSQL-Fehler.
Update:Nach einer Diskussion auf der Mailingliste von Postgres ist dies nicht der Fehler, sondern ein Feature - die Situation ist nicht einfach, also unterstützen beide Sprachen NULL, aber das Verhalten von NULL unterscheidet sich in jeder dieser Sprachen ein wenig. Es ist schwer zu entscheiden, ob SQL NULL sofort in JSON NULL umgewandelt werden muss und sofort ein SQL-Verhalten verloren geht. Wenn Sie ein anderes Verhalten benötigen, können Sie eine SQL-Funktion verwenden:
CREATE OR REPLACE FUNCTION to_json2(anyelement)
RETURNS json AS $$
SELECT COALESCE(to_json($1), json 'null')
$$ LANGUAGE sql;