
Jackson转换TimeStamp时空字串的问题
coding五月 21, 20161mins
经验错误
问题H2
当使用Jackson进行json数据转换时,如果目标字段类型为TimeStamp并且要转换的值为空字串时会报空指针错误。
原因H2
下面是Timestamp反序列化器的代码
bash
public static class TimestampDeserializer extends DateBasedDeserializer<Timestamp>{public TimestampDeserializer() { super(Timestamp.class); }public TimestampDeserializer(TimestampDeserializer src, DateFormat df, String formatString) {super(src, df, formatString);}@Overrideprotected TimestampDeserializer withDateFormat(DateFormat df, String formatString) {return new TimestampDeserializer(this, df, formatString);}@Overridepublic java.sql.Timestamp deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException{return new Timestamp(_parseDate(jp, ctxt).getTime());}}
通过_parseDate方法转换为Date后,并没有判断是否转换成功而直接调用了getTime方法。
解决H2
添加一个自定义的TimeStamp的Deserializer,然后通过SimpleModule来注册到ObjectMapper中。
评论
新的评论
上一篇
Hibernate one-to-one 懒加载的问题
问题 Hibernate在使用OneToOne的反向关联或者使用主键关联(PrimaryKeyJoinColumn)时,会出来懒加载不起的作用的情况。究其原因,Hibernate的能够进行懒加载的前提是返回的关联对象是个代理对象。如果Hibernate不能确定关联的对象是否为空…
下一篇
Hibernate使用outer join fetch集合时返回重复的结果
问题 如果我们有一个订单关联三个订单项,当进行下面的查询时 返回的结果集会是三个一样的订单对象,分别包含了三个订单项。 原因 首先在SQL层面LEFT JOIN会以左表为驱动表去关联从表的中的所有记录。以上面的的订单为例,就会返回三条纪录。而Hibernate默认会保留所有的驱…
