我的 JSON 对象在键
value
下包含双值。但是,有时它们是嵌套的,因此可以存在这样的数据结构:
[
{
"value": 0.1
},
{
"value": {
"value": 0.3
}
}
]
我正在尝试想出一个仅返回
0.1
和 0.3
的表达式。这可能吗? JSON 作为 JSONB 字段存储在 PostgreSQL 数据库中(如果这有什么区别的话)。
.**
中使用 jsonb_path_query()
JSONPath 访问器,并确保仅使用 .type()=="number"
过滤器表达式捕获 ?()
的值:select id,jsonb_path_query(jdata,'$[*].**.value ? (@.type() == "number")')
from test;
id | jsonb_path_query |
---|---|
1 | 0.1 |
1 | 0.3 |