如何使用Spectral Linting检测指定Tag是否存在
检测指定Tag是否缺失的实现方法
你当前使用的paths[*]..summary只能匹配到存在且有有效值的summary标签,要检测标签本身缺失,需要用JSONPath的过滤表达式实现,具体操作如下:
- 方案1:精准判断标签是否存在(最推荐,不会误判空值场景)
用hasOwnProperty判断键是否存在,查询所有缺少summary标签的父节点:
执行后返回的结果就是所有本身没有summary键的节点集合,如果结果为空说明所有待检查节点都有summary标签,反之则返回对应的缺失节点。paths[*][?(!(@.hasOwnProperty('summary')))] - 方案2:兼容不支持hasOwnProperty的运行环境
用undefined判断实现:
效果和方案1一致,适配部分对原生方法支持不全的JSONPath解析器。paths[*][?(@.summary === undefined)]
注意:不要使用
paths[*][?(!@.summary)]这类简化写法,该写法会把summary值为false、0、""、null的节点误判为标签缺失,不符合检测「标签本身是否存在」的需求。
如果需要跨任意层级检测缺失的summary标签,可调整语法为$..[?(!(@.hasOwnProperty('summary')))],按需限定匹配范围即可。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

