fastjson遇到的问题

2019-10-15  本文已影响0人  高节

今天碰到一个问题,需要将数据保存在ES,然后便于搜索,由于ES本身是存在1秒钟的延迟的,所以ES一致性要求不高,主要是最终一致,我就想通过kafka消息的方式来同步

因为是kafka消息,所以传输的对象为string,然后用JSON.parseObject()方法解析回来,然后再执行,可是在这个反序列化的方法中,却出现了属性丢失的情况,原因是fastjson的原理是通过反射,调用set方法,比如{"name": "AA"},实际就是调用setName(),但是ES里面的 IndexRequest 对象没有这些方法,所以导致属性丢失

解决方案,反序列化的对象必须要有set方法,所以我就将 index,id, source存到自定义的对象,然后再反序列化,这样就能获取

还有一点,自定义的对象必须要有空参构造器,fastjson原理就是用空参构造器创建对象,然后set

代码久不贴了,还没有整理好,今天先记录问题

上一篇下一篇

猜你喜欢

热点阅读