json提取器参数说明:

 

 

 

 json表达式:

提取单个值

Jsonpath结果
$.data.total 3
$..total 3
$..users[0].role user
$..uuid 079BF6BB82AFCFC7084F96AECAF0519F
$.data.users[0].ext_info.yesapi_points 0

 

重点

  • 如果匹配到多个值(像 $..uuid ),也只能提取到一个值
  • 如果想提取匹配到的所有 uuid,可以设置为 -1,结果如下图

 

利用切片提取单个值

和 Python  切片一样的原理

Jsonpath结果
$..users[2] 第三个 users
$..users[-2] 倒数第二个users
$..users[0,1] 前面两个users
$..users[:2] 第一、二个users
$..users[1:2] 第二个users
$..users[-2:] 倒数两个users
$..users[1:] 第二个开始的所有users

 

提取多个值

  • 四种写法类似,选一种方法自己熟记即可
  • 重点:提取多个值,提取器的 Match No. 必须填 -1

 

$.data.users[*].role

提取所有 role 字段值

[*] 表示取数组的所有元素

 

$..users..role_desc

提取所有 role_desc 字段值

$..reg_time

提取所有 reg_time 字段值

$..[*].username

提取所有 username 字段值

 

按条件提取值

有时候只需要提取某个特定条件下的参数值

 

语法格式

[?(expression)]

 

例子

Jsonpath结果
$..users[?(@.uuid)] 提取 users 里面包含 uuid 字段的记录
$..users[?(@.reg_time > '2020-06-01')] 提取 reg_time 字段大于 2020-06-01 的记录
$..users[?(@.role_desc =~ /.*会员.*?/i)] 提取 role_desc 字段包含会员的记录
$..users[?(@.status == 0)] 提取 status 字段等于 0 的记录

 

@

代表当前节点,像上面的四例子子,@代表 users 这个列表字段

 

=~

  • 后面跟正则表达式,如果想提取包含指定字符的值,可以使用此正则: /.*指定字符串.*?/i 
  •  i  代表大小写不敏感

 

案例转载至: https://www.cnblogs.com/poloyy/p/13177102.html

posted on 2022-07-28 19:33  阿宅gogo  阅读(214)  评论(0编辑  收藏  举报