Java中如何加载嵌套JSON数据并构造POJO用于API测试?
实现方案
核心逻辑说明
你需要依次构造列表子项、外层POJO对象,再直接传入Rest Assured的body()方法即可,框架会自动将POJO序列化为符合要求的JSON结构。
完整测试类代码
import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { // 1. 初始化外层POJO对象 ClassName className = new ClassName(); // 2. 构造4组name-value的子项列表 List<ListOfItems> itemList = new ArrayList<>(); ListOfItems item1 = new ListOfItems(); item1.setName("name1"); item1.setValue("Jack"); itemList.add(item1); ListOfItems item2 = new ListOfItems(); item2.setName("nameDate"); item2.setValue("20-08-2021-08-00-00"); itemList.add(item2); ListOfItems item3 = new ListOfItems(); item3.setName("address"); item3.setValue("address here"); itemList.add(item3); ListOfItems item4 = new ListOfItems(); item4.setName("name2"); item4.setValue("Smith"); itemList.add(item4); // 3. 给外层POJO的字段赋值 className.setListOfItems(itemList); className.setSomething(new ArrayList<>()); // 空列表要初始化,避免序列化出null className.setSize(1); // 数值可按实际需求调整,你示例代码写的150可直接替换此处的1 // 4. 直接把POJO传入body方法发起请求 given() .contentType("application/json") // 必须指定content-type为JSON,否则序列化会失败 .body(className) .when() .post("/endpoint") .then() // 后续自定义断言逻辑 .statusCode(200); } }
注意事项
- 确保你的项目中已经引入了Rest Assured配套的JSON序列化依赖,比如
jackson-databind,框架会自动完成POJO到JSON的转换,无需手动处理格式 - 你给出的示例JSON本身存在语法错误:第三个address子项末尾多了多余逗号,且第三个和第四个子项之间缺少分隔逗号,实际运行时POJO序列化不会出现该问题
内容的提问来源于stack exchange,提问作者jacob1989
相关产品推荐
相关产品推荐

