我有这样的查询:
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()
相同)
答案 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)