我希望让PostgreSQL以一个JSON数组的形式返回查询结果。给定的
create table t (a int primary key, b text);
insert into t values (1, 'value1');
insert into t values (2, 'value2');
insert into t values (3, 'value3');
我想要类似的东西。
[{"a":1,"b":"value1"},{"a":2,"b":"value2"},{"a":3,"b":"value3"}]
或
{"a":[1,2,3], "b":["value1","value2","value3"]}
(实际上,两者都知道会更有用)。我试过一些东西,比如
select row_to_json(row) from (select * from t) row;
select array_agg(row) from (select * from t) row;
select array_to_string(array_agg(row), '') from (select * from t) row;
我觉得我已经很接近了,但并不是真的。我是否应该查看除9.15. JSON Functions and Operators之外的其他文档
顺便说一下,我不太确定我的想法。这是通常的设计决定吗?我的想法是,当然,我可以采用上述3个查询中的第一个查询的结果(例如),并在将其提供给客户机之前在应用程序中稍微操作它,但是如果PostgreSQL可以直接创建最终的JSON对象,它将会更简单,因为我仍然没有在应用程序中包含对任何JSON库的任何依赖项。
发布于 2017-09-19 18:02:08
另外,如果您希望从表中选择字段并聚合,则将其作为数组。
SELECT json_agg(json_build_object('data_a',a,
'data_b',b,
)) from t;
结果将会到来。
[{'data_a':1,'data_b':'value1'}
{'data_a':2,'data_b':'value2'}]
https://stackoverflow.com/questions/24006291
复制相似问题