RestAssured中POJO映射API嵌套数组后无法访问platforms数据的解决方法
如何访问POJO嵌套数组中的Platforms数据?
嘿,我懂你现在的困惑——嵌套数组的访问确实容易踩坑,咱们来一步步搞定它。
首先,你的POJO类结构是完全没问题的,@JsonIgnoreProperties也配置正确了,问题出在List类型的访问方式上:因为data是List<DataReference>,而每个DataReference里的platforms又是List<Platform>,所以不能直接用users.data.platforms这种链式访问,得先定位到具体的元素才行。
1. 访问单个Data元素下的单个Platform数据
如果你想获取第一个用户的第一个平台数据,只需要通过索引来定位List中的元素:
// 先拿到第一个用户对象 DataReference firstUser = users.data.get(0); // 再拿到该用户的第一个平台对象 Platform firstUserFirstPlatform = firstUser.platforms.get(0); // 现在就可以访问平台的属性了 System.out.println("平台ID: " + firstUserFirstPlatform.id); System.out.println("平台名称: " + firstUserFirstPlatform.name);
2. 遍历所有Data元素下的所有Platforms数据
如果需要批量处理所有用户的所有平台,用嵌套循环就可以搞定:
// 遍历每一个用户 for (DataReference user : users.data) { System.out.println("当前用户ID: " + user.id); // 遍历该用户的所有平台 for (Platform platform : user.platforms) { System.out.println("平台ID: " + platform.id + " | 平台名称: " + platform.name + " | 平台URL: " + platform.url); } }
3. 额外注意:避免空指针异常
如果接口返回的platforms可能为空数组或者null,建议先做非空判断,防止报错:
for (DataReference user : users.data) { // 先判断platforms是否存在且不为空 if (user.platforms != null && !user.platforms.isEmpty()) { for (Platform platform : user.platforms) { // 处理平台数据 } } else { System.out.println("用户ID " + user.id + " 没有关联任何平台"); } }
简单来说,核心就是记住:List类型的变量必须通过get(index)或者遍历的方式拿到具体的对象,之后才能访问对象里的属性~
内容的提问来源于stack exchange,提问作者vmaric
相关产品推荐
相关产品推荐

