将varchar数组转换为带有jsonb对象的数组

时间:2019-08-29 07:51:02

标签: postgresql jsonb

我有一个字符串数组,像这样:

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;

1 个答案:

答案 0 :(得分:3)

demo:db<>fiddle

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
  1. 使用unnest()将数组元素扩展为一个记录
  2. 使用jsonb_object_build()创建JSON对象,以创建所需的键/值结构
  3. 使用jsonb_agg()将这些对象重新聚集到一个新的JSON数组中