3

我正在尝试使用 POstgreSQL 9.4 中的新 json 函数,发现它们中的大多数都非常有用。例如,将 Composite 类型转换为 json 以帮助后端进程更轻松地映射函数结果。

但我无法工作的是另一种方式,将 json 字符串转换为 Composite 类型的对象。

请注意,这里使用函数调用 to_json(...) 来模拟具有复合类型确切结构的 json 字符串

DROP TYPE IF EXISTS myType_1;
DROP TYPE IF EXISTS myType_0;

CREATE TYPE myType_0 AS (
    id SMALLINT,
    name TEXT
);

CREATE TYPE myType_1 AS (
    since TIMESTAMP,
    objects myType_0[]
);


SELECT json_populate_record(NULL::myType_1, 
                            to_json( ROW( now(), 
                                          ARRAY[ROW(1,'name1')::myType_0, 
                                                ROW(2,'name2')::myType_0, 
                                                ROW(4,'name3')::myType_0])::myType_1))

代码返回

ERROR:  malformed array literal: "[{"id":1,"name":"name1"},{"id":2,"name":"name2"},{"id":4,"name":"name3"}]"
DETAIL:  "[" must introduce explicitly-specified array dimensions. 
4

0 回答 0