arrays - 如何在以下 json 数组中获取 f1 的值为 1 - '[1,2,3,{"f1":1,"f2":[5,6]},4]' 使用内置函数
问题描述
我无法获取 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 路径:
select jsonb_path_query_first('[1,2,3,{"f1":1,"f2":[5,6]},4]', '$.f1')
推荐阅读
- javascript - HTML 验证适用于 codepen,但不适用于我的笔记本电脑或 IIS
- python - ParserError:错误标记数据。C 错误:字符串中的 EOF 从第 110994 行开始 1
- mongodb - 如何根据mongoDB中的过滤器更新对象的属性
- azure - 在 Azure Sphere 设备上使用 DHCP 服务器时如何找到 DHCP 客户端?
- java - 相对布局定位
- javascript - 如何使用三元运算符重写此代码?
- android - 两种方式数据绑定 EditText
- reactjs - 使用 React Hooks 从 YouTube API 获取数据
- python - 如何使用 print() 将语句格式化为字符串和数字
- android - 没有第三方库的安卓认证