On Tue, May 1, 2012 at 12:22 PM, Andrew Dunstan <andrew@dunslane.net> wrote:
> Second, RFC 4627 is absolutely clear: a valid JSON value can only be an
> object or an array, so this thing about converting arbitrary datum values to
> JSON is a fantasy. If anything, we should adjust the JSON input routines to
> disallow anything else, rather than start to output what is not valid JSON.
No, the RFC says (emphasis mine):
A JSON *text* is a serialized object or array.
If we let the JSON type correspond to a *value* instead, this
restriction does not apply, and the JSON type has a useful recursive
definition.
For example, this function would not be possible if we applied the
"object or array" restriction:
unnest(json) returns setof json
Note that a similar distinction appears with the XML type: "document"
versus "content".
-Joey