天天看点

jackson 序列化 通过给定Class映射 与抽象类的映射

//如果已知想要序列化的类型 可以使用TypeReference来进行处理
//List<MyBean> result = mapper.readValue(src, new TypeReference<List<MyBean>>() { });




//如果是未知情况可以使用TypeFactory来进行动态反射序列化
//apper.readValue(src, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class, MyBean.class));




//另外如果你的类当中的某个属性是抽象类 那么在反序列化的时候可以通过
@JsonDeserialize(as=Impl.class) 来进行处理




//如果属性是 List 内部元素是抽象类
For java.util.List values you would use @JsonDeserialize(contentAs=ValueTypeImpl.class) instead, and for java.util.Map keys, @JsonDeserialize(keyAs=KeyTypeImpl.class).      
//可以设置SimpleModule 进行个性化设置
SimpleModule module = new SimpleModule();
module.addSerializer(Date.class, new JsonSerializer<Date>() {
@Override
public void serialize(Date arg0, JsonGenerator jgen,
SerializerProvider arg2) throws IOException,
JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
jgen.writeString(format.format(arg0));
      }
    });
mapper.registerModule(module);