删除Postgres中json对象的双引号



我有一个Postgres函数,它有一个insert语句,其中一列必须转换为json并插入到表中。在这里,我想删除json对象的双引号。

请帮助如何实现它。

REPLACE(json_build_array(adm_id),'"', '') 

上面的代码错误地说出了replace(json, text, text) doesn't exist。我试图将其强制转换为文本并删除双引号,但当我将其转换回json时,它再次添加了双引号。

尝试使用trim删除json文档周围的双引号:

jsonb_build_array(trim('"' FROM adm_id))

或者替换以从每个json元素中删除它们:

replace(jsonb_build_array(c)::text,'"','')

演示:

WITH j (c) AS (
VALUES ('"{id: 1, txt: "foo"}"'),('{id: 2}')
) 
SELECT 
jsonb_build_array(trim('"' FROM c)),
replace(jsonb_build_array(c)::text,'"','')
FROM j;
jsonb_build_array     |         replace         
---------------------------+-------------------------
["{id: 1, txt: "foo"}"] | [{id: 1, txt: foo}]
["{id: 2}"]               | [{id: 2}]
(2 rows)

最新更新