是否可以为特定字段编写n个自定义序列化程序,然后有时使用序列化程序A,另一次使用序列化程序B?我之前编写过自定义序列化程序,但我已经通过注释使用它们,在这种情况下是不可能的。我真的想避免像视图这样的东西,因为我必须为每个序列化器实现编写一个getter。
这就是我所拥有的:
@JsonSerialize(using = MongoIdSerializer.class)
String id;
这就是我想要的:
@JsonSerialize(using = <SerializerDeclaredByPropertyFile>)
String id;
答案 0 :(得分: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
方法中,您将返回正确序列化程序的实例。