从json获取text []时发出问题

时间:2018-01-12 08:27:07

标签: json postgresql

我要求在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的值作为文本数组并存储在数据库中

1 个答案:

答案 0 :(得分:2)

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 );      
...