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

标签 postgresql jsonb

我有表示 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/

相关文章:

sql - 使用另一行数据的 SELECT 查询

python - 如何在数据框中的列之间进行匹配并保留另一列

json - 如何通过 jsonḃ postgres 求和列组

C++ Poco ODBC 事务 - 自动提交模式

Postgresql 在重新创建表后忘记了授权

ruby-on-rails - Rails PostgreSQL jsonb GROUP BY 对内部动态键的查询

sql - 如何对 jsonb 中的字段执行求和,然后使用结果过滤查询的输出

postgresql - 如何在 Postgres、Activerecord、Rails 5 中查询空的 jsonb 数组

sql - 识别冲突的正则表达式

database - jsonb_set 在过程中传递变量值而不是静态