我正在尝试使用 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.