import包错误导致jackson @JsonSerialize 注解不工作

项目中需要用到jackson对对象进行序列化,对象中有日期字段,需要通过@JsonSerialize 注解来进行定制化序列化.
Pojo:

@JsonSerialize(using = XMLGregorianCalendar2StringSerializer.class)
private XMLGregorianCalendar fromDate;

自定义序列化方法:

public class XMLGregorianCalendar2StringSerializer extends JsonSerializer<XMLGregorianCalendar> {
  @jOverride
  public void serialize(XMLGregorianCalendar xmlGregorianCalendar, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
    jsonGenerator.writeString(xmlGregorianCalendar.toString());
  }
}

序列化:

ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(pojo)

测试中发现,自定义的序列化方法没有起作用,将断点放在自定义序列化方法上,代码未走到断点处,可以判断,该序列化方法没有被调用。
另外开一个新工程,用上述代码,可以正常执行自定义序列化方法。这种错误让笔者百思不得其解。
于是对比两个工程的文件,发现了问题所在:
在老工程中,ObjectMapper引入的是org.codehaus.jackson.map.ObjectMapper, 而新工程中,ObjectMapper引入的是com.fasterxml.jackson.databind.ObjectMapper,至此,问题得到解决。
究其原因,是笔者的老工程中使用了jersey包,里面包含了org.codehaus.jackson.map.ObjectMapper,笔者在使用IDE自动导入时,没有注意,就直接敲了回车,导致了问题产生。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值