PostgreSQL的。 json_object_agg()返回文本字符串而不是json对象

时间:2016-02-25 07:06:04

标签: json postgresql postgresql-json

撰写here时,json_object_agg(name, value)返回类型为json。同时,如果我从存储过程返回json_object_agg()返回的值:

CREATE OR REPLACE FUNCTION _getlocales()

RETURNS json AS
$BODY$DECLARE
    var json;
BEGIN
    select into var json_object_agg("key", "values") from table;
    RETURN var;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

并在另一个函数中调用它:

variable    =   _getlocales();    
RAISE NOTICE 'DATA TYPE %', pg_typeof(variable);
SELECT variable->>'property'

我无法获得JSON对象字段。我碰到了:

  

错误:运算符不存在:text - >>未知

引发通知显示数据类型为text

  

注意:数据类型文本

我尝试将_getlocales()返回类型更改为jsonb,但没有更改:

CREATE OR REPLACE FUNCTION nav._getlocales()
RETURNS jsonb AS
$BODY$DECLARE
    _l18nJson   jsonb;
...

为什么会这样?

1 个答案:

答案 0 :(得分:1)

@Richard Huxton指出了正确的方向,我不专心,并且我已用variable数据类型声明text。所以,我改变了:

$BODY$DECLARE
    variable text;

致:

$BODY$DECLARE
    variable json;

问题解决了。