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

反序列化Test类时遇无构造器错误,求问题排查指导

问题分析与解决

错误原因

你遇到的Jackson反序列化错误,核心是Jackson无法创建Test类实例——当前类既没有无参构造方法,也没有提供Jackson可识别的带参构造器/创建逻辑,导致无法从JSON对象反序列化出Test实例。

代码问题点

你的Test类仅定义了带参构造,缺少无参构造;同时自定义了Builder类,导致Lombok的@Builder注解无法生成Jackson可识别的构建逻辑,进一步引发反序列化失败。

可行解决方案

方案1:添加无参构造方法(最简单)

在Test类中新增无参构造,同时加上@Setter注解让Jackson能给私有字段赋值:

@Getter
@Setter
@Builder(builderClassName = "Builder")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Test {
    // 新增无参构造
    public Test() {}

    public Test(String service, String user) {
        this.service = service;
        this.user = user;
    }
   
    private static final long serialVersionUID = 1L;
   
    @JsonProperty("service")
    private String service;
    
    @JsonProperty("user")
    private String user;

    @SuppressWarnings("java:S2094")
    public static class Builder {}
}

方案2:给带参构造添加Jackson识别注解

保留现有带参构造,给构造方法加@JsonCreator,同时给每个参数加@JsonProperty指定对应JSON字段名:

@Getter
@Builder(builderClassName = "Builder")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Test {
    // 给构造方法添加Jackson注解
    @JsonCreator
    public Test(@JsonProperty("service") String service, @JsonProperty("user") String user) {
        this.service = service;
        this.user = user;
    }
   
    private static final long serialVersionUID = 1L;
   
    @JsonProperty("service")
    private String service;
    
    @JsonProperty("user")
    private String user;

    @SuppressWarnings("java:S2094")
    public static class Builder {}
}

方案3:正确使用Lombok Builder并支持Jackson反序列化

去掉自定义的Builder类,让Lombok自动生成,同时添加@Jacksonized注解(需Lombok 1.18.16及以上版本),让Jackson能通过Builder完成反序列化:

@Getter
@Builder
@Jacksonized
@JsonIgnoreProperties(ignoreUnknown = true)
public class Test {
    private static final long serialVersionUID = 1L;
   
    @JsonProperty("service")
    private String service;
    
    @JsonProperty("user")
    private String user;
}

注:这种方式Lombok会自动生成带参构造和Builder,@Jacksonized会自动配置Jackson识别该Builder,无需手动编写构造或Builder类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:25:35