我正在尝试以JSON返回表的列名,其中每个列名是键,数据类型是值。
我有以下代码:
SELECT jsonb_agg(json_build_object(column_name, udt_name::regtype)) AS list
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'layer_1001'
这将产生以下结果:
[{"id": "integer"}, {"geom": "geometry"}, {"address": "text"}, {"start_date": "timestamp without time zone"}]
但是我需要代码产生以下结果:
{"id": "integer", "geom": "geometry", "address": "text", "start_date": "timestamp without time zone"}
有人知道怎么做吗?
答案 0 :(得分:1)
使用功能json_object
or jsonb_object
它们带有两个参数,即键和值的数组,并且都必须可序列化为文本
SELECT
JSON_OBJECT(ARRAY_AGG(column_name::TEXT), ARRAY_AGG(udt_name::text))
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'mytable'