我正在试验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.