You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestAssured中如何通过比较JSON字段提取并打印指定值

高效提取指定类型袋号的解决方案

直接用JSONPath过滤提取

不需要分开提取两个列表再对比,JSONPath支持过滤表达式,可以直接筛选出bagtype为cash的对象并提取bagnumber,代码如下:

// 一步提取符合条件的bagnumber列表
List<String> cashBagNumbers = response.jsonPath().getList("$.findAll { it.bagtype == 'cash' }.bagnumber");

// 拼接成目标输出格式
String result = "Bag numbers are: " + String.join(", ", cashBagNumbers);
System.out.println(result);

代码说明:

  • $.findAll { it.bagtype == 'cash' }:遍历JSON数组,筛选出所有bagtype等于cash的对象
  • .bagnumber:提取筛选后对象的bagnumber字段,直接得到目标列表
  • String.join(", ", cashBagNumbers):将列表元素拼接成逗号分隔的字符串,输出符合要求的格式

用Hamcrest Matchers做验证(可选)

如果需要验证提取结果是否符合预期,可以结合Hamcrest的Matchers类:

import static org.hamcrest.Matchers.hasItems;
import static org.hamcrest.Matchers.containsInAnyOrder;

// 验证提取的列表包含指定元素
response.then().body("findAll { it.bagtype == 'cash' }.bagnumber", hasItems("B", "D"));

// 若要求元素顺序一致,使用containsInAnyOrder
response.then().body("findAll { it.bagtype == 'cash' }.bagnumber", containsInAnyOrder("B", "D"));

内容的提问来源于stack exchange,提问作者user2024

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:48:14