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

如何在Rest Assured中编写包含数组的请求体?

问题分析与解决方案

你的代码存在三个核心问题:

  1. serviceProviderEmailList 构建错误:用Map包装字符串再放入List,导致生成的是对象数组而非目标要求的字符串数组
  2. 遗漏 rejectMessage 字段:目标请求体包含该字段,但你的代码未添加
  3. contactEmail 值错误:误将rejectMessage的值填入了该字段

正确写法一:直接使用 JSONObject + List

JSONObject jsonobj1 = new JSONObject();
jsonobj1.put("requestNumber", 749);
jsonobj1.put("referenceNumber", "tyryrty");
jsonobj1.put("cardType", "aliqua pariatur enim cupidatat");
jsonobj1.put("companyName", "amet Lorem");
jsonobj1.put("rejectMessage", "tempor dolor officia"); // 补上遗漏字段
jsonobj1.put("contactEmail", "mollit pariatur veniam sed"); // 修正字段值
// 直接创建字符串列表,无需嵌套Map
List<String> emailList = Arrays.asList("ipsum nis", "Ut dolore aliqua exercitation irure");
jsonobj1.put("serviceProviderEmailList", emailList);
jsonobj1.put("approvedBy", "sup");
jsonobj1.put("approvedDate", "1962-07-15T01:00:55.437Z");

正确写法二:使用 Rest Assured 原生语法(简洁直观)

given()
        .contentType(ContentType.JSON)
        .body("{\n" +
                "  \"requestNumber\": 749,\n" +
                "  \"referenceNumber\": \"tyryrty\",\n" +
                "  \"cardType\": \"aliqua pariatur enim cupidatat\",\n" +
                "  \"companyName\": \"amet Lorem\",\n" +
                "  \"rejectMessage\": \"tempor dolor officia\",\n" +
                "  \"contactEmail\": \"mollit pariatur veniam sed\",\n" +
                "  \"serviceProviderEmailList\": [\"ipsum nis\", \"Ut dolore aliqua exercitation irure\"],\n" +
                "  \"approvedBy\": \"sup\",\n" +
                "  \"approvedDate\": \"1962-07-15T01:00:55.437Z\"\n" +
                "}")
        .post("/your-api-endpoint");

正确写法三:使用 POJO 类(规范易维护)

先定义对应请求体的实体类:

public class RequestBodyDTO {
    private int requestNumber;
    private String referenceNumber;
    private String cardType;
    private String companyName;
    private String rejectMessage;
    private String contactEmail;
    private List<String> serviceProviderEmailList;
    private String approvedBy;
    private String approvedDate;

    // 生成所有字段的getter、setter方法,或使用Lombok的@Data注解简化
}

再构建请求体并发起请求:

RequestBodyDTO requestBody = new RequestBodyDTO();
requestBody.setRequestNumber(749);
requestBody.setReferenceNumber("tyryrty");
requestBody.setCardType("aliqua pariatur enim cupidatat");
requestBody.setCompanyName("amet Lorem");
requestBody.setRejectMessage("tempor dolor officia");
requestBody.setContactEmail("mollit pariatur veniam sed");
requestBody.setServiceProviderEmailList(Arrays.asList("ipsum nis", "Ut dolore aliqua exercitation irure"));
requestBody.setApprovedBy("sup");
requestBody.setApprovedDate("1962-07-15T01:00:55.437Z");

given()
        .contentType(ContentType.JSON)
        .body(requestBody)
        .post("/your-api-endpoint");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:10:25