使用 jsonb 对象将 varchar 数组转换为数组
Converting varchar array to array with jsonb objects
我有一个字符串数组,如下所示:
SELECT ARRAY['user1@example.com', 'user2@example.com', 'user3@example.com'];
我如何将它转换(映射?)成像这样的 jsonb 对象的 jsonb 数组?:
SELECT [{"email": "user1@example.com"}, {"email": "user2@example.com"}, {"email": "user3@example.com"}]::jsonb;
SELECT
jsonb_agg(jsonb_build_object('email', elems))
FROM (
SELECT ARRAY['user1@example.com', 'user2@example.com', 'user3@example.com'] AS a
) s,
unnest(a) AS elems
- 将数组元素展开为一条记录,每条记录
unnest()
- 使用
jsonb_object_build()
创建 JSON 对象以创建您期望的 key/value 结构
- 使用
jsonb_agg()
将这些对象重新聚合到一个新的JSON数组中
我有一个字符串数组,如下所示:
SELECT ARRAY['user1@example.com', 'user2@example.com', 'user3@example.com'];
我如何将它转换(映射?)成像这样的 jsonb 对象的 jsonb 数组?:
SELECT [{"email": "user1@example.com"}, {"email": "user2@example.com"}, {"email": "user3@example.com"}]::jsonb;
SELECT
jsonb_agg(jsonb_build_object('email', elems))
FROM (
SELECT ARRAY['user1@example.com', 'user2@example.com', 'user3@example.com'] AS a
) s,
unnest(a) AS elems
- 将数组元素展开为一条记录,每条记录
unnest()
- 使用
jsonb_object_build()
创建 JSON 对象以创建您期望的 key/value 结构 - 使用
jsonb_agg()
将这些对象重新聚合到一个新的JSON数组中