PostgreSQL单列表到JSON数组

时间:2019-02-09 22:24:53

标签: json postgresql

我有这样的查询:

SELECT DISTINCT floor FROM rooms WHERE building_id = 23;

我想将结果转换为JSON数组。我可以如下使用json_agg()

SELECT json_agg(a) from (SELECT DISTINCT floor FROM rooms WHERE building_id = 23) as a;

但这会导致键/值对的数组排列:

[{"floor":null},{"floor":1},{"floor":4},{"floor":2},{"floor":0},{"floor":3}]

实际上,我只需要一个值数组:

[null,1,4,2,0,3]

出于性能和带宽的原因,我不想让列名不必要地重复。关于如何制作仅包含值的JSON数组的任何想法吗?

(我也尝试过array_to_json(array_agg()),但产生的结果与json_agg()相同)

1 个答案:

答案 0 :(得分:1)

Sepal.Length中的library(sqldf) sql <- "select `Sepal.Length`, Species from file" sub_iris <- read.csv.sql("iris.csv", sql = sql, row.names = FALSE) head(sub_iris) # Sepal.Length Species #1 5.1 "setosa" #2 4.9 "setosa" #3 4.7 "setosa" #4 4.6 "setosa" #5 5.0 "setosa" #6 5.4 "setosa" 是表别名。如果将其编码为JSON,则会获得带有列名/列值对的字典。请改为参考列名:

unlink("iris.csv")

或更简单的是,使用a代替子查询:

json_agg(a)