Re: how to correctly cast json value to text?

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: how to correctly cast json value to text?
Date: 2021-05-03 09:23:52
Message-ID: CAFj8pRBrwzBaz_qJA7Kqh-v2J0Wde1uXOyGz8an6ERt-pfd1LQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi

po 3. 5. 2021 v 11:15 odesílatel Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
napsal:

> Hi
>
> I am testing a new subscripting interface for jsonb, and I found one issue.
>
> DO $$
> DECLARE v jsonb;
> BEGIN
> v['a'] = '"Ahoj"';
> RAISE NOTICE '%', v['a'];
> END;
> $$;
> NOTICE: "Ahoj"
> DO
>
> When I use this interface for reading, the jsonb type is returned. What is
> the correct way for casting from jsonb text to text value? I would not
> double quotes inside the result. Cast to text doesn't help. For operator
> API we can use "->>" symbol. But we have nothing similar for subscript API.
>

now I need function like

CREATE OR REPLACE FUNCTION public.value_to_text(jsonb)
RETURNS text
LANGUAGE plpgsql
IMMUTABLE
AS $function$
DECLARE x jsonb;
BEGIN
x['x'] = $1;
RETURN x->>'x';
END;
$function$

DO $$
DECLARE v jsonb;
BEGIN
-- hodnota musi byt validni json
v['a'] = '"Ahoj"';
RAISE NOTICE '%', value_to_text(v['a']);
END;
$$;
NOTICE: Ahoj
DO

Is it possible to do this with built functionality?

I miss the cast function for json scalar string value to string.

Regards

Pavel

> Regards
>
> Pavel
>
>
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Marko Tiikkaja 2021-05-03 09:25:59 Re: how to correctly cast json value to text?
Previous Message Pavel Stehule 2021-05-03 09:15:08 how to correctly cast json value to text?