JsonPath 过滤操作符

在 JsonPath 中,为了方便提取 JSON 内容,提供了很多内置的过滤操作符,使用过滤操作符可以根据条件对 JSON 进行过滤。

过滤器是用于过滤数组的逻辑表达式,一个典型的过滤器是 [?(@.age > 18)] ,其中:

  • [?()] 表示一个过滤表达式,参考 JsonPath [?(< expression>)] 操作符

  • @ 代表正在处理的当前项目。

  • @.age 表示当前正在处理项的 age 字段。

  • @.age > 18 表示将当前正在处理项的 age 字段值和 18 进行比较,判断是否大于 18,如果大于,则返回 true;否则,返回 false。

注意:

(1)使用逻辑运算符 && 和 || 可以创建更复杂的过滤器。

(2)字符串文字必须用单引号或双引号括起来,例如:[?(@.color == 'blue')] 或者 [?(@.color == "blue")]。

过滤操作符表:

操作符

描述

==

判断左边等于右边,注意 1 不等于'1',示例:

[?(@.age == 20)] 判断年龄是否等于 20 岁

!=

左边不等于右边,示例:

[?(@.age != 20)] 判断年龄是否不等于 20 岁

<

左边小于右边,示例:

[?(@.age < 18)] 判断年龄是否小于 18 岁

<=

左边小于等于右边,示例:

[?(@.age <= 18)] 判断年龄是否小于等于 18 岁

>

左边大于右边,示例:

[?(@.age > 20)] 判断年龄是否大于 20 岁

>=

左边大于等于右边,示例:

[?(@.age != 20)] 判断年龄是否大于等于 20 岁

=~

左侧匹配右侧的正则表达式,示例:

[?(@.name =~ /foo.*?/i)]

in

左边存在于右边,示例:

[?(@.sex in ['男', '女'])] 判断性别 sex 的值是否为“男”或“女”

nin

左边不存在于右边,示例:

[?(@.sex nin ['男', '女'])] 判断性别 sex 的值不是“男”,也不是“女”

subsetof

左边是右边的子集,示例:

[?(@.sizes subsetof ['S', 'M', 'L'])] 判断 sizes 字段的值是否为 ['S', 'M', 'L'] 的一个子集

anyof

左边与右边有交集,示例:

[?(@.sizes anyof ['M', 'L'])] 判断 sizes 字段和 ['M','L'] 是否存在交集,即 sizes 字段的值至少有一个在  ['M', 'L'] 中

noneof

左边与右边没有交集,示例:

[?(@.sizes noneof ['M', 'L'])] 判断 sizes 字段和 ['M', 'L'] 不存在交集,即 sizes 字段的值在 ['M', 'L'] 中不存在

size

左侧(数组或字符串)的大小应与右侧一致

empty

left (array or string) should be empty left(数组或字符串)应为空

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号