jackson 不存在创建者(如默认构造函数),无法从对象值中解析(没有基于委托或属性的创建者)

xggvc2p6  于 2023-11-19  发布在  其他
关注(0)|答案(3)|浏览(173)

我得到这个类的错误,而重新定义数据,任何输入我在这里做错了什么。没有创建者,像默认构造函数,存在,无法从对象值重新定义(没有委托或基于属性的创建者)

@Getter
@Builder(builderClassName = "Builder")
@JsonIgnoreProperties(ignoreUnknown = true)
  public class 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
    {
       
    }
}

字符串

tag5nh1u

tag5nh1u1#

可能不会帮助这个确切的情况下,但因为这是顶部的搜索结果,我会添加这一点的情况下,它是有帮助的人:
原来接口可以使事情复杂化,并导致这个Jackson错误。

oxosxuxt

oxosxuxt2#

你有两种不同的做法:
1.使用@Builder而不是@Builder(builderClassName = "Builder")。Lombok将自动创建构建器名称。
1.在类级别上添加@NoArgsConstructor@Setter注解。

qgelzfjb

qgelzfjb3#

@Jacksonized Lombok注解添加到您的类中使其对我有效:

@Getter
@Builder(builderClassName = "Builder")
@JsonIgnoreProperties(ignoreUnknown = true)
@Jacksonized
public class Test {

字符串
根据Lombok文件:
@Jacksonized annotation是@Builder@SuperBuilder的附加annotation。它会自动配置生成的builder类,以供Jackson的示例化使用。只有在存在@Builder@SuperBuilder的上下文中才有效;否则会发出警告。
如果没有@Jacksonized,你必须自定义你的构建器类。使用@Jacksonized,你可以简单地写这样的东西让Jackson使用生成的构建器:

@Jacksonized @Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class JacksonExample {
  private List<Foo> foos;
}

相关问题