我无法获得json数组的值
select json_extract_path('[1,2,3,{"f1":1,"f2":[5,6]},4]','f1')
当我尝试使用此内置函数时,它为我提供了空值。
它给出的输出为空值,我希望返回值为1。
您忘了通过索引访问数组元素:
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')