如何选择JSON形式的表的列名?

时间:2018-07-10 14:47:58

标签: sql json postgresql

我正在尝试以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"}

有人知道怎么做吗?

1 个答案:

答案 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'