表定义是:
chat_id serial primary key,last_update timestamp,messages JSON[]
我想插入这样的记录:
insert into chats (messages) values ('{{"sender":"pablo","body":"they are on to us"}}');
有错误:
ERROR: malformed array literal: “{{“sender”:”pablo”,”body”:”they are on to us”}}”
LINE 1: insert into chats (messages) values (‘{{“sender”:”pablo”,”bo…
我也试过这种方法:
insert into chats (messages) values (ARRAY('{"sender":"pablo","body":"they are on to us"}'));
请注意,更新行并使用array_append插入工作正常.
解决方法
我认为这是JSON符号之间的冲突,它以{和Postgres中的短手数组符号开头,其中数组的字符串表示也用{表示.
以下作品:
insert into chats (messages) values (array['{"sender":"pablo","body":"they are on to us"}']::json[]);
这避免了{{通过使用显式数组构造函数的歧义.
要使数组成为json数组,您需要将字符串转换为json或将结果数组转换为json [](请参阅上面的示例).如果在该行中有多个JSON文档,则转换整个数组会更容易:
insert into chats (messages) values (array['{"sender":"pablo","body":"they are on to us"}',{"sender":"arthur"}']::json[]);
或者:
insert into chats (messages) values (array['{"sender":"pablo","body":"they are on to us"}'::json,{"sender":"arthur"}'::json]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。