将字段名称用单引号括起来的 json 字符串作为 jsonb 字段插入 postgresql
Insert json string with field names enclosed in single quotes into postgresql as a jsonb field
我有代表 json 的字符串,其中字段名称和值用单引号引起来,例如 {'name': 'Grzegorz', 'age': 123}
。假设我在 postgres 数据库中也有一个 table:
CREATE TABLE item (
metadata jsonb
);
我正在尝试使用 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: {'...
是否有可能插入 json 并将名称用单引号 '
括起来而不是双引号 "
或者我应该将所有 '
转换为 "
?
提前致谢!
格热戈日
Json syntax 需要双引号,所以这不是 Postgres 的问题。服务器只接受有效的 json 值。
您可以使用 replace()
:
insert into item
values(replace('{''name'': ''Grzegorz'', ''age'': 123}', '''', '"')::jsonb);
select * from item;
metadata
----------------------------------
{"age": 123, "name": "Grzegorz"}
(1 row)
我有代表 json 的字符串,其中字段名称和值用单引号引起来,例如 {'name': 'Grzegorz', 'age': 123}
。假设我在 postgres 数据库中也有一个 table:
CREATE TABLE item (
metadata jsonb
);
我正在尝试使用 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: {'...
是否有可能插入 json 并将名称用单引号 '
括起来而不是双引号 "
或者我应该将所有 '
转换为 "
?
提前致谢!
格热戈日
Json syntax 需要双引号,所以这不是 Postgres 的问题。服务器只接受有效的 json 值。
您可以使用 replace()
:
insert into item
values(replace('{''name'': ''Grzegorz'', ''age'': 123}', '''', '"')::jsonb);
select * from item;
metadata
----------------------------------
{"age": 123, "name": "Grzegorz"}
(1 row)