我正在尝试扩展
com.fasterxml.jackson.databind.ser.std.MapSerializer包含我自己定义的一些要在serialize()方法中使用的函数。

public class MyMapSerializer extends MapSerializer{
    //have constructors
    //override method
    @Override
     public void serialize(Map<?,?> value, JsonGenerator jgen, SerializerProvider provider){}
}


然后,将注释添加到地图中,如下所示:

@JsonSerialize(using = org.entities.generator.MyMapSerializer.class)
private Map<ObjectA,ObjectB> myObject;


但是,当我在MapSerializer中添加一个断点时,它甚至都没有加入。
而且我尝试扩展JsonSerializer>,它就包含在内。
有谁知道如何使用扩展的MapSerializer?
谢谢您的帮助

最佳答案

我不建议尝试对Jackson的默认序列化器进行子分类:这很脆弱。

但是,如果您确实想这样做,请看一下MapSerializer:我的猜测是它的createContextual()方法最终构造了一个配置不同的实例。您可能需要覆盖处理此类实例创建的其他方法之一;您只需要那些来构造instanceof MyMapSerializer而不是默认的MapSerializer

关于java - 如何在Hashmap中使用扩展的Jackson MapSerializer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23249909/

10-11 04:48