将字段名称用单引号括起来的 json 字符串作为 jsonb 字段插入到 postgresql 中

Grz*_*zes 4 postgresql jsonb

我有表示 json 的字符串,其中字段名称和值括在单引号中,例如{'name': 'Grzegorz', 'age': 123}。假设我在postgres数据库中还有一个表:

CREATE TABLE item (
     metadata jsonb
);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 JOOQ 插入行。JOOQ 生成以下语句: insert into Item values('{''name'': ''Grzegorz'', ''age'': 123}'::jsonb);但抛出错误:

ERROR:  invalid input syntax for type json
LINE 1: insert into Item values('{''name'': ''Grzegorz'', ''age'': 1...
Token "'" is invalid.
JSON data, line 1: {'...
Run Code Online (Sandbox Code Playgroud)

是否有可能插入名称用单引号'而不是双引号括起来的 json ",或者我应该将其全部转换'"

提前致谢!

格热戈日

kli*_*lin 5

Json语法需要双引号,所以这不是Postgres的问题。服务器仅接受有效的 json 值。

您可以使用replace()

insert into item 
values(replace('{''name'': ''Grzegorz'', ''age'': 123}', '''', '"')::jsonb);

select * from item;

             metadata             
----------------------------------
 {"age": 123, "name": "Grzegorz"}
(1 row)
Run Code Online (Sandbox Code Playgroud)