通过jackson微笑解串器调试后,我发现杰克逊没有发现用List
注释的@Singular
。
有没有办法用杰克逊@Singular
制作@JsonPOJOBuilder
?
@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
的工作正常。
答案 0 :(得分:1)
此处的问题是您初始化favs
字段:
List<String> favs = new ArrayList<>();
归因于@Value注释的是final
。因此,@RequiredArgsConstructor生成的构建器或构造函数无法设置/覆盖它。通过尝试自己构建实例来验证:
MyClass.builder().name("a").fav("1").fav("2").build();
intellij在这里说没有fav
方法,@Builder
和@Singular
应该创建一个。
解决方法:
favs
的初始化,让lombok,jackson初始化我测试了lombok 1.16.18和jackson 2.9.2