如何编写JSON Path实现对attributes下description数组的过滤?
JSON Path 过滤数组字段的正确写法
问题分析
你之前的写法$..[?(@.attributes.description == 'Newgroup')]无效,核心原因是attributes.description是数组类型,直接用它和字符串做相等比较,类型不匹配,JSON Path无法完成匹配。
正确表达式
根据需求分两种场景给出写法:
- 精确匹配数组指定位置的元素
如果description是固定的单元素数组,可直接通过索引获取元素后比较:
$..[?(@.attributes.description[0] == 'New group description')]
(对应你参考数据里第二个条目description的实际值)
- 检查数组中是否包含目标值
如果数组可能有多个元素,或不确定目标值位置,用in关键字判断值是否存在于数组中:
$..[?('Newgroup' in @.attributes.description)]
参考JSON数据
[ {"name": "NeWgR34","path": "/NeWgR34","attributes": {"description": ["De5cr$p(0#.,"]}}, {"name": "Newgroup","path": "/Newgroup","attributes": {"description": ["New group description"]}} ]
内容的提问来源于stack exchange,提问作者asalk
相关产品推荐
相关产品推荐

