PostgreSQL. json_object_agg() возвращает текстовую строку вместо объекта json

Как написано здесь, 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,

УВЕДОМЛЕНИЕ: ТИП ДАННЫХ

Я пытался изменить _getlocales() тип возврата jsonb, но ничего не изменилось:

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

Почему это происходит?

1 ответ

Решение

@Richard Huxton указал мне верное направление, я был невнимателен и объявил variable с text тип данных. Итак, я изменился:

$BODY$DECLARE
    variable text;

Для того, чтобы:

$BODY$DECLARE
    variable json;

И проблема была решена.

Другие вопросы по тегам