根据指定JSON创建Java实体类,内部$Original类items无法设置求助
问题解决:JSON映射Java实体类的$Original内部类属性配置问题
目标JSON结构
"ContactPhone": { "item": [ { "id": "3080075", "phoneNum": "2222222222", "$original": { "phoneNum": "2222222222" } }, { "phoneNum": "7878787878" } ], "$original": { "item": [ { "id": "3080075" }, null ] } }
原代码的问题
你之前的代码存在两个核心问题:
$Original是非静态内部类,Jackson反序列化时无法直接实例化,必须依赖外部ContactPhone实例,导致无法正确映射- 在
$Original内部重复定义了Item类,与外层的Item重名,编译时会报错,同时泛型类型会产生冲突
正确的Java实体类实现
@Getter @Setter public class ContactPhone { @JsonProperty("item") private List<Item> items = new ArrayList<>(); @JsonProperty("$original") private Original original; @Data public static class Item { private String id; private String phoneNum; @JsonProperty("$original") private ItemOriginal itemOriginal; } @Data public static class ItemOriginal { private String phoneNum; } @Data public static class Original { @JsonProperty("item") private List<OriginalItem> items = new ArrayList<>(); } @Data public static class OriginalItem { private String id; } }
关键调整说明
- 将所有内部类改为
static:静态内部类不依赖外部类实例,Jackson可以直接反序列化 - 为不同结构的嵌套对象创建独立类:比如
OriginalItem对应$original.item里的元素,ItemOriginal对应每个Item里的$original对象,避免命名冲突和字段混淆 - 显式添加
@JsonProperty("$original")标注:确保字段名和JSON中的$original正确映射 - 补全
Item类的id字段:原JSON中第一个item元素包含id,需要在实体类中对应添加
内容的提问来源于stack exchange,提问作者user3919727
相关产品推荐
相关产品推荐

