如果非负数值有加号,不能强制转换为jsonb



下面的命令工作

select '[0,1, -2,  -0.3444, 5.6]'::jsonb;

但是下面3个不工作。

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;

下面的工作

select +0.1;
select (+0.1)::text;

第一个工作示例是一个包含有效JSON文档的字符串,被强制转换为JSONB;

不工作的示例再次将字符串强制转换为JSONB,但字符串包含无效的JSON表达式,因此不能解析为JSON。如果你看一下JSON语法,numberinteger fraction exponent,integer的数字可以选择以-开头。在JSON中不允许使用符号+。括号也是不允许的。你可以使用JSON验证器来验证。

最新更新