fastjson序列化从一个服务获取的数据,序列化时间有问题

    fastjson是现在国内使用最广的一款json库了吧,开源自阿里巴巴,具体详情可以查看fastjson github主页

下面直接入主题,看应用场景:


流程:

1.前端调用服务A提供的接口获取展示数据

2.服务A调用服务B提供的接口获取数据

3.服务A读取从服务B获取到的data属性,然后强制转换成服务A中的某个实体列表,代码大致如下

List<ClassA> payList = (List<ClassA>)resultMap.get("data");

class ClassA{

   @JSONField(format="yyyy-MM-dd HH:mm")

    private Date payDate;

   ......

}

4.服务A将整理好的数据,经过fastjson序列化后传递给前端页面

奇怪的问题出现了:

服务A中的classA实体里面设置的序列化特性没有生效,具体原因是(List<ClassA>)resultMap.get("data")强制转换的结果仅仅是一个JSONArray对象,而不是List<ClassA>,所以在序列化时根本就不可能读到ClassA类中设置的序列化特性(笔者建议打个断点看一下)。

解决方法:

通过JSONArray提供的toJavaList方法:

List<ClassA> payList = resultMap.getJSONArray("data").toJavaList(ClassA.class);

猜你喜欢

转载自blog.csdn.net/john1337/article/details/80536376