场景:假设有一个需要序列化的对象中包含一个日期对象,这是如果直接将该对象转化为JSON,日期的格式就不可控,可以使用如下的方式引入自己的策略来控制属性的序列化过程
1.编写对象的属性转化策略
public class DateTimeSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
jsonGenerator.writeString(sdf.format(date));
}
}
2.编写需要序列化为JSON对象的测试Bean
public class FormatModel {
private double money;
@JsonSerialize(using = DateTimeSerializer.class)
private Date date;
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
3.测试 在家对象序列化为JSON对象的时候就会被序列化为指定的格式
@RequestMapping(value = "h2")
public @ResponseBody
Object testHeaderContext() {
FormatModel o=new FormatModel();
o.setDate(new Date());
o.setMoney(12.12345678);
return o;
}