求助:无法使用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
相关产品推荐
相关产品推荐

