我需要从 postgres 存储过程中的 json 值解析文本数组。如下,
下面是我的程序实现,
CREATE OR REPLACE FUNCTION updateEventTable(inputdata json)
RETURNS void AS $$
DECLARE
msgList text[];
BEGIN
msgList := inputdata ->'messageList';
INSERT INTO "MyTable" ("MESSAGE_LIST")
values (msgList );
END;
$$
LANGUAGE PLPGSQL;
下面是我的存储过程调用,参数字段中包含 JSON 字符串,
SELECT * from updateEventTable('{
"messageList": ["Message1", "Message2"]
}');
我是否遵循正确的方法从 json 获取文本数组..请在此处指导我。 表MyTable中的“MESSAGE_LIST”字段是文本数组类型。 postgres中有没有json支持函数可以完成这项工作?
我的要求是从 json 中获取 messageList 的值作为文本数组并存储在数据库中
最佳答案
inputdata ->'messageList'
是一个 json 数组。您应该使用 json_array_elements_text() 解压它并将其元素聚合到文本数组:
...
SELECT array_agg(elem)
INTO msgList
FROM json_array_elements_text(inputdata ->'messageList') elem;
INSERT INTO "MyTable" ("MESSAGE_LIST")
values (msgList );
...
关于json - 从 json 获取 text[] 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222227/