首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL返回的结果集是否为JSON数组?

PostgreSQL返回的结果集是否为JSON数组?
EN

Stack Overflow用户
提问于 2014-06-03 10:40:03
回答 1查看 207.9K关注 0票数 179

我希望让PostgreSQL以一个JSON数组的形式返回查询结果。给定的

代码语言:javascript
复制
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');

我想要类似的东西。

代码语言:javascript
复制
[{"a":1,"b":"value1"},{"a":2,"b":"value2"},{"a":3,"b":"value3"}]

代码语言:javascript
复制
{"a":[1,2,3], "b":["value1","value2","value3"]}

(实际上,两者都知道会更有用)。我试过一些东西,比如

代码语言:javascript
复制
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库的任何依赖项。

EN

回答 1

Stack Overflow用户

发布于 2017-09-19 18:02:08

另外,如果您希望从表中选择字段并聚合,则将其作为数组。

代码语言:javascript
复制
SELECT json_agg(json_build_object('data_a',a,
                                  'data_b',b,
))  from t;

结果将会到来。

代码语言:javascript
复制
 [{'data_a':1,'data_b':'value1'}
  {'data_a':2,'data_b':'value2'}]
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24006291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档