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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:26