方括号处或附近的错误 - Postgres

Error at or near square brackets - Postgres

我正在尝试 运行 一个 PostgreSQL 查询,它是:

insert into client (email, name) values ('johndoe@email.com', 'johnDoe');
insert into client_settings (client_id, data) values (currval('client_id_seq'), 0);
insert into client_verify (client_id, dataFields) values (currval('client_id_seq'), json_build_object('data1', ['a1', 'a2'], 'data2', ['b1', 'b2']) );

但我收到一条错误消息,指出 SQL 错误 [42601]:“[”处或附近的语法错误。

最后一个 json 对象(即 dataFields)插入数据库时​​应该如下所示:

{"data1": ["a1", "a2"], "data2": ["b1", "b2"]}

不确定我做错了什么。有没有我遗漏的东西或不同的方法?

这是你需要的吗:

insert into client_verify (client_id, dataFields) 
values (currval('client_id_seq'), json_build_object('data1', 'a1, a2', 'data2', 'b1, b2')  );

请试试这个:

insert into client_verify (client_id, dataFields) 
values (currval('client_id_seq')
        , json_build_object('data1', '["a1", "a2"]', 'data2', '["b1", "b2"]'));

在这里你可以检查你需要如何添加你的字符串: https://www.freeformatter.com/json-escape.html#ad-output

UNESCAPE 是您需要的选项

这是一个演示:

DEMO

经过充分研究,我 found documentation 将 'Array' 放在像这样的人前面:

json_build_object('data1', Array['a1', 'a2'], 'data2', Array['b1', 'b2'])