@MarkusEfr

Как выбрать данные из JSON в Postgresql?

Приветствую.
У меня есть фронт, на котором формируется объект в виде json, затем переводится в строку base64, через бэк попадает в PostgreSQL (v. 11) где строка переводится обратно в json и нужно вытянуть из него данные по колонкам.
После преобразования в БД объект json имеет такой вид
"{\"type\":[\"Shop\",\"Task\"],\"tag\":[\"code\",\"soft\",\"analitic\"]}"
и нужно выбрать из него все "type" и "tag".

Попробовал сделать это следующим образом
Код

CREATE OR REPLACE FUNCTION filtering(
	filter64base text)
    RETURNS 
	TABLE(type text, tag text) 
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
    ROWS 1000
AS $BODY$
DECLARE
filterString character varying(200) = (SELECT CONVERT_FROM(DECODE($1, 'BASE64'), 'UTF-8'));  
isTypes boolean;
isTags boolean;
BEGIN
DROP TABLE IF EXISTS FilterJsonData;
  CREATE 
  TEMP TABLE 
  FilterJsonData(stringObj json);

  INSERT INTO FilterJsonData(stringObj)
  VALUES
  ((SELECT to_json(filterString)));
	
	RETURN QUERY
	SELECT 
     stringObj::json->>'type',
     stringObj::json->>'tag'
    FROM FilterJsonData;
END;
$BODY$;


Но так получается выборка null по обеим полям, хотя данные то имеются..
Прошу помочь - как выбрать типы и теги ?
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
@MarkusEfr Автор вопроса
проблема была связана с тем что при преобразовании появлялись лишние символы "\" и " поэтому json читался некорректно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
select * from json_each('{"a":"foo", "b":"bar"}')
https://www.postgresql.org/docs/current/functions-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы