对于以下示例和问题,我们可以使用 jsonpath 为给定表达式选择值:
{
"items": [
{
"id": 1,
"name": "item1",
"album": {
"name": "Summer Trip",
"meta": [
{
"name": "CreatedBy",
"value": "Karen"
},
{
"name": "Address",
"value": "San Jose, CA"
}
]
}
},
{
"id": 2,
"name": "item2",
"album": {
"name": "Winter Trip",
"meta": [
{
"name": "CreatedBy",
"value": "Lola"
},
{
"name": "Address",
"value": "Seattle, WA"
}
]
}
}
]
}
我想过滤掉其专辑元条件为的项目name == "CreatedBy" and value == "Karen"
,并返回项目 id 和 name。例如:
{
items: [
{
"id": 1,
"name": "item1"
}
]
}
通过查看 jsonpath 的工作原理,似乎一旦深入到嵌套的 JSON 节点,它就无法捕获父节点值,例如,我可以捕获节点值,例如
$..meta[?(@.name == 'CreatedBy' && @.value == "Karen")]
它返回了meta内的对象,而不是它的父节点items。
[
{
"name": "CreatedBy",
"value": "Karen"
}
]
是否可以使用 jsonpath 来实现我正在寻找的东西?