10

我希望我在这里没有遗漏一些非常明显的东西,
我想从 postgres 函数中获取 JSON 输出(我想许多其他人已经需要这个)并且我很乐意在我的服务器上安装 contrib 函数的扩展,

有没有办法从 sql 或 plpgsql 函数(或在 db-server-side python 的帮助下)获取 JSON 输出?具体来说,我想以record[]JSON 格式获得我的结果。

4

4 回答 4

11

从PostgreSQL 9.2开始就内置了对 JSON 的支持,并且在最近的版本中增加了许多其他功能(例如:PostgreSQL 0.4 中的 JSON 函数)。

特别是row_to_json将记录转换为 JSON 对象并将array_to_json数组转换为 JSON 数组。

例如,可以将这两个函数组合起来,轻松地将SELECT查询结果转换为 JSON:

SELECT array_to_json(array_agg(row_to_json(t))) FROM 
    (SELECT col1, col2, col3 FROM example_table) t
于 2012-06-25T23:19:56.657 回答
4

使用9.2 中的record_to_json(...) ,现在可以反向移植到 9.1

于 2012-06-26T01:55:10.053 回答
3

在服务器上安装:
sudo apt-get install postgresql-plpython-9.4

然后在您的 Postgres 服务器上:

CREATE EXTENSION IF NOT EXISTS plpythonu;
CREATE LANGUAGE plpythonu;

CREATE OR REPLACE FUNCTION prettyprint_json(data text)
 RETURNS json
 AS $$
    import json
    return json.dumps(json.loads(data), indent=4)
 $$ LANGUAGE plpythonu;
于 2015-09-18T11:10:22.997 回答
2

plpython插件当然可以让你使用python json库来做到这一点。

你可以这样做:

CREATE OR REPLACE FUNCTION myschema.tojsonfunc()
AS $$    

   import json;
   jsonStr = json.dumps(myrecord)

$$ LANGUAGE plpythonu;
于 2012-06-25T23:41:56.083 回答