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

PostgreSQL. json_object_agg() returns text string instead of json object

here 所写,json_object_agg(name, value) return 类型为json。同时,如果我 return 由存储过程中的 json_object_agg() 编辑的值 return:

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 对象字段。我运行进入:

ERROR: operator does not exist: text ->> unknown

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

NOTICE: DATA TYPE text

我尝试将 _getlocales() return 类型更改为 jsonb,但没有任何改变:

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

为什么会这样?

@Richard Huxton 为我指明了正确的方向,我当时注意力不集中,我用 text 数据类型声明了 variable。所以,我改变了:

$BODY$DECLARE
    variable text;

收件人:

$BODY$DECLARE
    variable json;

问题已解决。