Thread: Cast json array to postgres array and preserve order of elements
When I want t to convert json array into postgres array, I do:
with t(j) as(
select '{"my_arr":[3,1,2]}'::json
)
SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t
It works like a charm and I never noticed any problem, but I'm asking here just to make sure, order of elements will be preserved always?
Is that guaranteed in above example, or not?
Thanks.
On 5/10/20 8:21 AM, otar shavadze wrote: > When I want t to convert json array into postgres array, I do: > > with t(j) as( > select '{"my_arr":[3,1,2]}'::json > ) > SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t > > > It works like a charm and I never noticed any problem, but I'm asking > here just to make sure, order of elements will be preserved always? > Is that guaranteed in above example, or not? > > yes. The order is significant and the elements are produced in array order. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Great, thanks very much Andrew!
On Sun, May 10, 2020 at 7:08 PM Andrew Dunstan <andrew.dunstan@2ndquadrant.com> wrote:
On 5/10/20 8:21 AM, otar shavadze wrote:
> When I want t to convert json array into postgres array, I do:
>
> with t(j) as(
> select '{"my_arr":[3,1,2]}'::json
> )
> SELECT ARRAY(SELECT json_array_elements_text(j->'my_arr')) from t
>
>
> It works like a charm and I never noticed any problem, but I'm asking
> here just to make sure, order of elements will be preserved always?
> Is that guaranteed in above example, or not?
>
>
yes. The order is significant and the elements are produced in array order.
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services