如何在Rest Assured中编写包含数组的请求体?
问题分析与解决方案
你的代码存在三个核心问题:
serviceProviderEmailList构建错误:用Map包装字符串再放入List,导致生成的是对象数组而非目标要求的字符串数组- 遗漏
rejectMessage字段:目标请求体包含该字段,但你的代码未添加 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
相关产品推荐
相关产品推荐

