json - 从 json 获取 text[] 时出现问题

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

最佳答案

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/

相关文章:

python - 如何将模型字段传递给 JsonResponse 对象

sql - 动态查找列名的函数

postgresql - 如何加入同一张 table 以获得两天之间的价格差异?

sql - Rails 查询同一字段上的多个条件

php - 使用 php 的图表

java - JSON 响应使用 Jackson 和 JAX-RS 异常映射器转义了引号

sql - 当某些东西存储为数组时的 Rails where 子句

postgresql - 如何在不允许正则表达式注入(inject)的情况下在 sql 中使用文本搜索和参数化查询

javascript - Ember数据加载路线时出错: TypeError: undefined is not a function

javascript - 将 JSON 文件转换为 Javascript 对象