jsonb_pretty()
This page documents the preview version (v2.23). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Purpose: Format the text representation of the JSON value that the input jsonb
actual argument represents, using whitespace, to make it more human-readable.
Signature:
input value: jsonb
return value: text
Notes: There is no json
variant. However, you can trivially typecast a json
value to a jsonb
value.
Because, in the main, JSON is mechanically generated and mechanically consumed, it's unlikely that you'll use jsonb_pretty()
in final production code. However, because JSON isn't self-describing, and because external documentation of a corpus's data-representation intent isn't always available, developers often need to study a representative set of extant JSON values and deduce the intended rules of composition. This task is made easier when JSON values are formatted in a standard, well designed, way.
The pretty format makes conventional, and liberal, use of newlines and spaces, thus:
do $body$
declare
orig_text constant text := '
{
"a": 1,
"b": {"x": 1, "y": 19},
"c": true
}';
expected_pretty_text text :=
'{
"a": 1,
"b": {
"x": 1,
"y": 19
},
"c": true
}';
j constant jsonb := orig_text::jsonb;
pretty_text constant text := jsonb_pretty(j);
begin
assert
pretty_text = expected_pretty_text,
'unexpected';
end;
$body$;
You might prefer to use the ::text
typecast to visualize a small jsonb
value.