如何在 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 中的数组类型列中

如何在 PostgreSQL 中获取表的每一天的第一个日期并将其转换为 JSON

如何在postgresql过程中为多维数组赋值

使用 PostgreSQL/NodeJS 获取 JOIN 表作为结果数组

如何在 postgresql 中使用带有数组列的 GIN 索引?