Java Rest-Assured新手问题:如何去除响应字符串方括号获取真实值
解决Rest-Assured提取JSON数组字段时的方括号问题
嘿,我看你在Rest-Assured入门阶段遇到了提取响应字段的小问题——提取的msg内容带方括号对吧?这其实是因为你的op_list本身是一个JSON数组,所以用res.path("op_list.msg")拿到的是一个List<String>类型的结果,直接调用toString()就会带上List默认的方括号格式啦。
给你几个实用的解决办法:
1. 直接提取数组中的指定元素(适用于确定只有一个元素的场景)
如果op_list里只有一个对象,你可以直接通过下标定位到对应的msg:
Response res = given() .when() .post("/profile") .then() .contentType(ContentType.JSON) .extract() .response(); // 用[0]指定数组的第一个元素 String rc3 = res.path("op_list[0].msg").toString(); System.out.println(rc3); // 输出就是不带方括号的"success"
2. 先获取列表再处理(适用于可能有多个元素的场景)
如果op_list可能包含多个元素,可以先把结果转成List,再按需获取:
Response res = given() .when() .post("/profile") .then() .contentType(ContentType.JSON) .extract() .response(); // 直接转成List<String>类型 List<String> msgList = res.path("op_list.msg"); // 取第一个元素 String rc3 = msgList.get(0); System.out.println(rc3); // 如果需要遍历所有元素 for (String msg : msgList) { System.out.println("当前msg内容:" + msg); }
3. 直接在断言环节处理(更简洁的写法)
其实你完全可以不用先提取响应再处理,直接在Rest-Assured的断言链里完成验证,这样代码更紧凑:
given() .when() .post("/profile") .then() .contentType(ContentType.JSON) // 直接断言数组第一个元素的msg等于"success" .body("op_list[0].msg", equalTo("success"));
这样就能轻松去掉讨厌的方括号,拿到你想要的纯字符串啦!
内容的提问来源于stack exchange,提问作者Juliya Sergey Miheeva
相关产品推荐
相关产品推荐

