2017-07-05 11 views
2

私はこのようなクラスを持っているためにカスタム・シリアライザを追加:ジャクソンがタイプXのすべてのフィールド

public class Foo { 
    private Integer id; 
    private FooB fooA; 
    private boolean isB; 
    private boolean isC; 
    private int age; 
    private LocalDate date1; 
    private LocalDate date2; 
    private LocalDate date3; 
    private LocalDate date4; 
} 

を私は、このクラスでネイティブLocalDateフィールドの以外のすべてをシリアライズしたいです。私はそうのようにそのためのカスタム・シリアライザを持っている:

public class LocalDateSerializer extends JsonSerializer<LocalDate> { 
    @Override 
    public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
     //serialize 
    } 
} 

は唯一のタイプLocalDateまたはのオブジェクトに対してシリアライザを使用すると言ってクラスFooに注釈を付ける方法はあります私は、個々のフィールドに注釈を付ける行かなければならないようなso:

public class Foo { 
    private Integer id; 
    private FooB fooA; 
    private boolean isB; 
    private boolean isC; 
    private int age; 
    @JsonSerialize(using = LocalDateSerializer.class) 
    private LocalDate date1; 
    @JsonSerialize(using = LocalDateSerializer.class) 
    private LocalDate date2; 
    @JsonSerialize(using = LocalDateSerializer.class) 
    private LocalDate date3; 
    @JsonSerialize(using = LocalDateSerializer.class) 
    private LocalDate date4; 
} 

私の質問は、単一のクラスレベルの注釈に統合できますか?

+0

カスタムモジュールの追加のように見えます。 https://spin.atomicobject.com/2016/07/01/custom-serializer-jackson/ – MaxPower

+0

@MaxPower私が求めている質問ではありません。私はすでにカスタムシリアライザを書いています。注釈を求めています – Richard

答えて

0

クラス内に1つのアノテーションしか使用しない解決策が見つかりませんでした。おそらく各フィールドに注釈を付けるのがあなたの得意なことです。


もう一つの方法は、プログラム的ObjectMapperを設定することです:

ObjectMapper om = new ObjectMapper(); 
JavaTimeModule module = new JavaTimeModule(); 
module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("dd/MM/yyyy"))); 
om.registerModule(module); 

addSerializer方法は、指定されたシリアライザを使用するすべてのLocalDateのフィールドをマッピングします。上記の例では、の組み込みのcom.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializerを使用しましたが、あなたが望むシリアライザ(カスタムのものも含む)で置き換えることができます。

ObjectMapperを設定したくない(または設定できない)場合は、各フィールドの注釈を使用するのが最適な解決策です。

関連する問題