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;
CodePudding user response:
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.