今天在开发Excel导出时发现一个Date类型的属性导出的不对,因为导出时将Vo装换成了Json,
Vo类Date字段也添加了@DateTimeFormat(pattern = "yyyy-MM-dd"),@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd"),那么这是为什么呢?
通过Debug断点发现Vo类集合中的数据是正确的,转换成JsonArray后数据类型就变成Long类型了,定位到问题发生点后看具体代码具体分析。
将Vo类集合转换成String,我用的是JSON.toJSONString(),我发现此方法是FastJson提供的而@JsonFormat注解是JackSon提供的,通过查找资料发现JSON.toJSONString()方法会默认把Date类型的字段转换成时间戳,问题原因找到了,那怎么解决呢?
使用JackSon提供的方法转换
当然FastJson也提供了方法
JSONArray.toJSONStringWithDateFormat(list, “yyyy-MM-dd HH:mm:ss”)
或者使用FastJson的@JSONField(format = "yyyy-MM-dd HH:mm:ss") 注解
通过这个问题也说明在一个项目中同一类型的中间库最好还是选其一就好。
如果觉得有帮助的话,请打赏下博主吧!
大家可以关注下公众号: