gpt4 book ai didi

java - 使用 lombok @Singular 和 jackson @JsonPOJOBuilder

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:16 24 4
gpt4 key购买 nike

通过jackson smile反序列化器调试后,发现我的@Singular注解的List并没有被jackson发现。

有没有办法用 jackson @JsonPOJOBuilder 制作 @Singular

@JsonDeserialize(builder = MyClass.MyClassBuilder.class)
@Value
@Builder
@RequiredArgsConstructor
@EqualsAndHashCode
public class MyClass {

@NonNull String name;
@NonNull @Singular List<String> favs = new ArrayList<>();

@JsonPOJOBuilder(withPrefix = "")
public static final class MyClassBuilder {
}
}

@Singular 更改为 @Builder.Default 效果很好。

最佳答案

这里的问题是您初始化了 favs 字段:

List<String> favs = new ArrayList<>();

由于@Value注释是 final。因此,它不能被 @RequiredArgsConstructor 生成的构建器或构造函数设置/覆盖。 .通过尝试自己构建一个实例来验证:

MyClass.builder().name("a").fav("1").fav("2").build();

intellij 这里说没有 fav 方法,但是 @Builder@Singular 应该创建一个。
解决方法:

  1. 在字段声明时跳过favs的初始化,让lombok、jackson初始化
  2. 创建您自己的构建器,将元素添加到预先存在的列表中

我用 lombok 1.16.18 和 jackson 2.9.2 测试

关于java - 使用 lombok @Singular 和 jackson @JsonPOJOBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46983466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com