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

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

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

  1. @Getter
  2. @Builder(builderClassName = "Builder")
  3. @JsonIgnoreProperties(ignoreUnknown = true)
  4. public class Test
  5. {
  6. public Test(String service, String user) {
  7. this.service = service;
  8. this.user = user;
  9. }
  10. private static final long serialVersionUID = 1L;
  11. @JsonProperty("service")
  12. private String service;
  13. @JsonProperty("user")
  14. private String user;
  15. @SuppressWarnings("java:S2094")
  16. public static class Builder
  17. {
  18. }
  19. }

字符串

tag5nh1u

tag5nh1u1#

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

oxosxuxt

oxosxuxt2#

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

qgelzfjb

qgelzfjb3#

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

  1. @Getter
  2. @Builder(builderClassName = "Builder")
  3. @JsonIgnoreProperties(ignoreUnknown = true)
  4. @Jacksonized
  5. public class Test {

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

  1. @Jacksonized @Builder
  2. @JsonIgnoreProperties(ignoreUnknown = true)
  3. public class JacksonExample {
  4. private List<Foo> foos;
  5. }

展开查看全部

相关问题