2017-10-27 15 views
4

jackson smileデシリアライザでデバッグした後、@Singularと注釈されたListにjacksonが見つかりませんでした。lombok @Singular with jackson @JsonPOJOBuilder

@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に作品を変更します。

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

による@Value注釈にfinal次のとおりです。ここ

答えて

1

問題は、favsフィールドを初期化するということです。したがって、@RequiredArgsConstructorによって生成されたビルダーまたはコンストラクタによってセット/上書きすることはできません。インスタンスを自分で構築しようとすることで、確認してください:ここ

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

IntelliJのは、@Singularとはfav方法が、@Builder、1つを作成するべきではないと言います。
解決:

  1. は、フィールド宣言でfavsの初期化をスキップし、ロンボクは、ジャクソン
  2. を初期化してみましょうあなたに私はロンボク1.16でテストリスト

既存の要素を追加する独自のビルダーを作成します。 18およびジャクソン2.9.2