按 属性 值在嵌套数据中查找对象(使用 JSONPath)
Find object in nested data by property value (with JSONPath)
我有这个测试数据:
[
{
id: 1,
l: 'a',
sub: [
]
},
{
id: 2,
l: 'b',
sub: [
{
id: 4,
l: 'd'
},
{
id: 5,
l: 'e'
},
{
id: 6,
l: 'f',
sub: [
{
id: 7,
l: 'g'
}
]
}
]
},
{
id: 3,
l: 'c',
sub: []
}
];
我正在尝试使用 id: 7
获取对象的路径。我尝试了很多 JSONPath 查询,但我似乎无法找到如何让 JSONPath 遍历所有 sub
键并在那里搜索。
如何才能将对象与 id: 7
相匹配?
这是我的测试插件:http://plnkr.co/edit/RoSeRo0L1B2oH3wC5LdU?p=preview
此查询应该适用于您正在做的事情:
$..[?(@.id==7)]
您需要删除 $..
之后的 ID,因为您想要 select 整个对象,而不仅仅是 ID。您还遗漏了查询周围的方括号。
此查询返回以下结果集:
[
{
"id": 7,
"l": "g"
}
]
如果您只想检索 l 属性 的值(因为您已经知道 ID),您也可以轻松地做到这一点。只需在查询末尾添加 .l
:
$..[?(@.id==7)].l
这会返回以下结果集:
[
"g"
]
我在这里使用这个在线 json 路径测试工具和你的 plunker 测试了第一个查询:
http://www.jsonquerytool.com/sample/jsonpathfilterallbypropertyvalue
我有这个测试数据:
[
{
id: 1,
l: 'a',
sub: [
]
},
{
id: 2,
l: 'b',
sub: [
{
id: 4,
l: 'd'
},
{
id: 5,
l: 'e'
},
{
id: 6,
l: 'f',
sub: [
{
id: 7,
l: 'g'
}
]
}
]
},
{
id: 3,
l: 'c',
sub: []
}
];
我正在尝试使用 id: 7
获取对象的路径。我尝试了很多 JSONPath 查询,但我似乎无法找到如何让 JSONPath 遍历所有 sub
键并在那里搜索。
如何才能将对象与 id: 7
相匹配?
这是我的测试插件:http://plnkr.co/edit/RoSeRo0L1B2oH3wC5LdU?p=preview
此查询应该适用于您正在做的事情:
$..[?(@.id==7)]
您需要删除 $..
之后的 ID,因为您想要 select 整个对象,而不仅仅是 ID。您还遗漏了查询周围的方括号。
此查询返回以下结果集:
[
{
"id": 7,
"l": "g"
}
]
如果您只想检索 l 属性 的值(因为您已经知道 ID),您也可以轻松地做到这一点。只需在查询末尾添加 .l
:
$..[?(@.id==7)].l
这会返回以下结果集:
[
"g"
]
我在这里使用这个在线 json 路径测试工具和你的 plunker 测试了第一个查询: http://www.jsonquerytool.com/sample/jsonpathfilterallbypropertyvalue