我有表示 json 的字符串,其中字段名称和值用单引号引起来,例如 {'name': 'Grzegorz', 'age': 123}
。假设我在 postgres 数据库中也有一个表:
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)
关于postgresql - 将字段名称用单引号括起来的 json 字符串作为 jsonb 字段插入到 postgresql 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33917496/