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

求助:无法使用RestAssured JsonPath从指定JSON中获取id列表

嘿,我来帮你搞定这个RestAssured JsonPath提取id列表的问题!你的JSON结构里有两个数组Test和Test2,每个里面都包含带id字段的对象,下面分几种场景给你具体的实现方法:

获取单个数组中的id列表

如果你只想提取某一个数组(比如Test或者Test2)里的所有id,可以直接用数组名加.id的JSONPath表达式,配合RestAssured的getList()方法就能拿到结果:

// 你的原始JSON字符串
String jsonData = "{ \"Test\": [ { \"id\": \"657\" }, { \"id\": \"2711\" } ], \"Test2\": [ { \"id\": \"657\" }, { \"id\": \"711\" } ] }";

// 初始化JsonPath对象
JsonPath jsonPath = new JsonPath(jsonData);

// 提取Test数组中的所有id
List<String> testIdList = jsonPath.getList("Test.id");
System.out.println(testIdList); // 输出: [657, 2711]

// 提取Test2数组中的所有id
List<String> test2IdList = jsonPath.getList("Test2.id");
System.out.println(test2IdList); // 输出: [657, 711]

如果是从RestAssured的响应对象中提取,写法更简洁:

Response response = given().when().get("你的接口地址");
List<String> testIds = response.jsonPath().getList("Test.id");
获取所有数组中的id(合并为一个列表)

要是你想把两个数组里的id全部提取出来合并成一个列表,可以用递归下降的JSONPath表达式$..id,它会匹配JSON中所有层级的id字段:

List<String> allIdList = jsonPath.getList("$..id");
System.out.println(allIdList); // 输出: [657, 2711, 657, 711]

这个表达式的意思是:$表示根节点,..表示递归遍历所有子节点,最终匹配所有名为id的字段,非常适合这种需要跨数组提取相同字段的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:40:21