jackson自定义对象的序列化和反序列化
2018年06月21日

Jackson的序列化和反序列化的基类为:

com.fasterxml.jackson.databind.JsonSerializer<T>

com.fasterxml.jackson.databind.JsonDeserializer<T>


先查看Jackson自己实现的一些类,比如:

MapSerializer


然后根据这些标准的实现,来改写就行了。


例如,我将 MapSerializer 源码拷贝一份,重命名为 MyMapSerilizer

然后改写其中的代码,找到关键位置,如下(红色部分为我添加的):

@Override

public void serialize(Result value, JsonGenerator gen, 

    SerializerProvider provider) throws IOException{

    gen.writeStartObject(value);

    if(value.getData()!=null) {

        gen.writeObjectField("data", value.getData());

    }

    if (!value.isEmpty()) {

     ...

    }

    ....

}


如何使用自定义的

先new一个SimpleModule,然后注册到objectMapper即可,

如下所示:

SimpleModule module = new SimpleModule();

module.addSerializer(MyObject.class, new MyMapSerilizer);

objectMapper.registerModule(module);


反序列化,亦是如此。