如何在 Postgresql 中获取数组的 JavaScript/JSON 数组?
Posted
技术标签:
【中文标题】如何在 Postgresql 中获取数组的 JavaScript/JSON 数组?【英文标题】:How to get JavaScript/JSON array of array in Postgresql? 【发布时间】:2016-02-23 02:49:49 【问题描述】:JSON 对象格式冗长:
"["id":1,"name":"John", "id":2,"name":"Jack"]"
有时,重复的字段名称比实际数据占用更多空间。为了节省带宽并加快页面加载速度,我想生成一个字符串格式的 javascript 数组并将其发送到客户端。例如对于这个数据:
create table temp (
id int,
name text
);
insert into temp values (1, 'John'), (2, 'Jack');
我想得到'[[1, "John"], [2, "Jack"]]'
。我怎样才能做到这一点?
我不想通过键入来聚合列,因为这很难维护。我也知道 postgresql 不允许像 JavaScript 这样的数组中有多种类型,因此一种可能性是使用复合类型,但是,字符串化/聚合结果最终会在其中包含“()”。
【问题讨论】:
【参考方案1】:select array_to_json(array_agg(json_build_array(id, name)))
from temp;
array_to_json
---------------------------
[[1, "John"],[2, "Jack"]]
【讨论】:
这在用 json_build_array 替换 jsonb_build_array 时有效。 Postgresql 9.4 触发了前者的错误。 这与我想要的非常接近,所以我可以使用它。我实际上是在追求select array_to_json(array_agg(json_build_array(temp))) from temp;
之类的东西,但这又将行转换为 JSON 对象类型。
这是可能的,但这是另一个问题。问它,我或其他人可能会回答它。以上是关于如何在 Postgresql 中获取数组的 JavaScript/JSON 数组?的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询从postgresql数据库表中具有数组数据类型的列中获取数据。
如何在 PostgreSQL 中获取表的每一天的第一个日期并将其转换为 JSON