You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

根据指定JSON创建Java实体类,内部$Original类items无法设置求助

问题解决:JSON映射Java实体类的$Original内部类属性配置问题

目标JSON结构

"ContactPhone": {
    "item": [
        {
            "id": "3080075",
            "phoneNum": "2222222222",
            "$original": {
                "phoneNum": "2222222222"
            }
        },
        {
            "phoneNum": "7878787878"
        }
    ],
    "$original": {
        "item": [
            {
                "id": "3080075"
            },
            null
        ]
    }
}

原代码的问题

你之前的代码存在两个核心问题:

  1. $Original是非静态内部类,Jackson反序列化时无法直接实例化,必须依赖外部ContactPhone实例,导致无法正确映射
  2. 在$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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:57:03