使用Jackson序列化POJO时,如何生成"Images": [ {} ]格式结构?
解决Jackson序列化生成
"Images": [ {} ]的问题 嘿,我来帮你搞定这个Jackson序列化的问题!你想要的"Images": [ {} ]其实是一个包含空JSON对象的数组,而你之前的两种尝试分别生成了空数组和包含空字符串数组的数组,方向不对,我给你两种可行的方案:
方案一:自定义空对象类
因为空的JSON对象{}对应的Java类型是一个没有任何字段的类,我们可以先定义一个这样的空类,然后用它的列表来实现需求:
- 首先创建一个空的POJO类:
public class EmptyJsonObject { // 不需要任何字段和方法 }
- 在你的主POJO中定义
Images字段,并添加一个空对象实例:
public class YourMainPojo { // 定义为EmptyJsonObject的列表 public ArrayList<EmptyJsonObject> Images = new ArrayList<>(); public YourMainPojo() { // 添加一个空对象到列表中 Images.add(new EmptyJsonObject()); } }
这样Jackson序列化后,就会得到"Images": [ {} ]的结构。
方案二:使用空HashMap替代自定义类
如果不想额外创建空类,也可以用Map<String, Object>来代替,因为Jackson会把空的Map序列化成{}:
public class YourMainPojo { // 定义为Map的列表 public ArrayList<Map<String, Object>> Images = new ArrayList<>(); public YourMainPojo() { // 添加一个空的HashMap到列表中 Images.add(new HashMap<>()); } }
这种方式和方案一效果完全一样,序列化后同样会生成"Images": [ {} ]。
补充说明
如果你不想在构造函数里添加元素,也可以直接在字段初始化的时候完成:
// 方案一的初始化方式 public ArrayList<EmptyJsonObject> Images = new ArrayList<>(List.of(new EmptyJsonObject())); // 方案二的初始化方式 public ArrayList<Map<String, Object>> Images = new ArrayList<>(List.of(new HashMap<>()));
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

