PL/pgSQL 行到 json 数组

PL/pgSQL rows to json array

我正在尝试检索一个 json 数组,其中包含使用此函数返回的行:

CREATE OR REPLACE FUNCTION get_users_list() 
RETURNS TABLE (
id INTEGER,
name VARCHAR,
surname VARCHAR,
fkrole INTEGER,
username VARCHAR
) as $$
BEGIN

RETURN QUERY SELECT users.id, users.name,
                    users.surname, users.fkrole, 
                    users.username 
FROM users;
END;
$$ LANGUAGE plpgsql;

有人可以给我提示吗?如何将多行转换为单个 JSON 数组?

谢谢!

试一试:

SELECT JSON_AGG(src) AS my_json_array
FROM (
  SELECT 
    users.id, 
    users.name, 
    users.surname, 
    users.fkrole, 
    users.username 
  FROM users
) src
;

这将为您提供 "src" 查询中的所有行作为单个 json 数组返回。

http://www.sqlfiddle.com/#!17/6241a/2

这里有一些关于 Postgres JSON 函数的更多信息:https://www.postgresql.org/docs/10/static/functions-json.html