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

JSON反序列化为指定MyUser类报错:类型ID缺失异常如何解决?

问题原因

MyUser继承了User类,而User类上标注的@JsonTypeInfo注解会被所有子类继承。这意味着Jackson在反序列化MyUser对象时,会默认遵循User类的配置要求,必须找到type属性确认子类型——哪怕你在Request里明确声明了是List<MyUser>,Jackson依然会执行这个类型检查,而你的JSON数据里缺少type字段,因此抛出异常。

解决方案

提供三种可行的解决方式,可根据需求选择:

1. 给MyUser类添加注解,忽略类型ID检查

直接在MyUser类上标注@JsonTypeInfo(use = JsonTypeInfo.Id.NONE),覆盖父类的类型检查配置,Jackson反序列化MyUser时就不会再要求type字段:

@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
public class MyUser extends User {
    // 原有属性和方法
}

2. 在Request的users字段上指定反序列化规则

如果不想修改MyUser类,可给Request中的users字段添加@JsonDeserialize(contentAs = MyUser.class),同时结合@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)覆盖该字段的类型检查逻辑:

public class Request {
    @JsonDeserialize(contentAs = MyUser.class)
    @JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
    List<MyUser> users;
}

3. 修改JSON数据,添加类型ID字段

如果允许调整JSON格式,给users数组中的每个对象添加type字段,对应MyUser在@JsonSubTypes中配置的名称myUser:

{
  "users": [{
      "type": "myUser",
      "name": "John"
  }]
}

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:50:25