2015-04-01 51 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

相关问题