On Sat, Jan 22, 2022 at 12:11 PM Erwin Brandstetter <brsaweda@gmail.com> wrote:
But the function also strips all insignificant white space:
[...]
This is a useful feature to trim noise from json values, but unreliable while undocumented. So let's document the behavior:
json_strip_nulls doesn't make any promise regarding its output json other than that it is valid. Since we are munging the json we are arguably within our rights to output whatever transformed version we want. The format should not be documented.
Within our rights, maybe. The manual makes related promises[1]:
> Because the json type stores an exact copy of the input text, it will preserve semantically-insignificant white space between tokens
And[2]:
> As previously stated, when a JSON value is input and then printed without any additional processing, json outputs the same text that was input,
Not strictly contradicting, but the current behavior of json_strip_nulls() is still surprising. Either the input should be preserved as far as possible or, failing that, the actual behavior documented.
It's an interesting, and IMO, disappointing thread. Maybe we can do better now and focus on one missing capability the community desires and actually get something committed.
That would address the main issue here: to have a function doing that reliably.