[
{
"name": "NeWgR34",
"path": "/NeWgR34",
"attributes": {
"description": [
"De5cr$p(0#.,"
]
}
},
{
"name": "Newgroup",
"path": "/Newgroup",
"attributes": {
"description": [
"New group description"
]
}
}
]
我想过滤描述...对于像name这样的过滤,它是这样的:$..[?(@.name == 'Newgroup')]
.
我试过$..[?(@.attributes.description == 'Newgroup')]
,但它不工作。
1条答案
按热度按时间jrcvhitl1#
$..[?(@.name == 'Newgroup')]
这将是更正确的,但你可能不需要
..
。这是一个递归搜索,看起来你的数据是非常明确和平坦的。为此,您只需删除..
@.attributes.description == 'Newgroup'
这里有几个问题。
1.您没有任何与此匹配的数据,因为
"NewGroup"
值位于@.name
属性中。您需要将相对路径(@.attributes.description
)与可能出现在那里的值进行比较。@.attributes.description
处的值是一个数组,因此与字符串进行比较不会产生任何结果。您需要使用嵌套路径来实现此功能。
您需要
@.attributes.description
包含"New group description"
值的任何项目。下面是分解:
**因为这个内部路径不与任何东西进行比较(没有比较运算符),所以它成为一个存在表达式。因此,如果 anything 匹配,则返回节点。
你可以在我的操场上看到这个。