Looks like row_to_json() thinks 0s are nulls:
postgres=# select row(0); row ----- (0) (1 row)
postgres=# SELECT row_to_json(row(0)); row_to_json ------------- {"f1":null} (1 row)
Best,
David