Advertisements
the following command working
select '[0,1, -2, -0.3444, 5.6]'::jsonb;
However the following 3 not working.
select '[0,1, -2, (+0.3444), 5.6]'::jsonb;
select '[0,1, -2, +0.3444, 5.6]'::jsonb;
select '[0,1, -2, +0, 5.6]'::jsonb;
The following working.
select +0.1;
select (+0.1)::text;
>Solution :
The first working example is a string containing a valid JSON document being cast as JSONB; the other ones contain valid PostgreSQL arithmetic expressions.
The non-working examples again have strings being cast into JSONB, but the strings contain invalid JSON expressions, and thus cannot be parsed as JSON. If you take a look at JSON grammar, number
is integer fraction exponent
, and integer
can have digits that optionally start with -
. The sign +
is not allowed in JSON. The parentheses are not allowed, either. You can verify this e.g. using JSON validator.