我如何在以下json数组中获得f1的值为1-'[1,2,3,{“ f1”:1,“ f2”:[5,6]},4] '使用内置函数

问题描述 投票:0回答:1

我无法获得json数组的值

select json_extract_path('[1,2,3,{"f1":1,"f2":[5,6]},4]','f1') 

当我尝试使用此内置函数时,它为我提供了空值。

它给出的输出为空值,我希望返回值为1。

arrays json postgresql
1个回答
0
投票

您忘了通过索引访问数组元素:

select json_extract_path('[1,2,3,{"f1":1,"f2":[5,6]},4]', '3', 'f1')
--                                                        ^^^^

或者,您可以将#>运算符与数组一起使用,或链接两个->运算符:

select '[1,2,3,{"f1":1,"f2":[5,6]},4]'::json #> '{3,f1}'
select '[1,2,3,{"f1":1,"f2":[5,6]},4]'::json -> 3 -> 'f1'

如果您不知道要处理数组,或者不知道对象所在的索引,可以尝试使用新的Postgres 12 json paths,它可以自动解开数组:

select jsonb_path_query_first('[1,2,3,{"f1":1,"f2":[5,6]},4]', '$.f1')
© www.soinside.com 2019 - 2024. All rights reserved.