jackson自定义对象的序列化和反序列化
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);
反序列化,亦是如此。