2015-04-01 117 views
0

是否可以爲特定字段編寫n個自定義序列化器,然後有時使用序列化器A和另一個時間使用序列化器B?我已經編寫了自定義序列化程序,但是我已經通過註釋來使用它們,在這種情況下這是不可能的。我真的想避免像視圖這樣的事情,因爲我必須爲每個序列化器實現編寫一個getter。Jackson用不同的自定義序列化器對字段進行序列化

這是我有:

@JsonSerialize(using = MongoIdSerializer.class) 
String id; 

這就是我想要的:

@JsonSerialize(using = <SerializerDeclaredByPropertyFile>) 
String id; 

回答

2

你可以寫你的財產使用自定義序列化。

@JsonSerialize(using = DelegatingSerializer.class) 
String id; 

的實施將是類似的東西:

public class DelegatingSerializer extends JsonSerializer<String>{ 

    public void serialize(String value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { 
     JsonSerializer<String> serializer = getSerializer(); 
     serializer.serialize(value, jgen, provider);  
    } 

    private JsonSerializer<String> getSerializer() { 
     ... 
     return someSerializerInstance; 
    } 

} 

getSerializer方法,你能返回正確的序列化的一個實例。

+0

好主意,thx! – KIC 2015-04-01 09:35:20