先描述下这里的业务:
我们有一个父类A,多个继承A的AA类、AB类、AC类,多了一些不同的业务字段。
业务分为多个端,如:甲端、乙端,通过kafka来交互数据,数据格式为一个VO,包含多个业务属性以外,还有一个List<A>属性引用类,这里实质内容还是AA、AB、AC类。
甲端封装好对应的参数后,传递给乙端进行解析时。json无法直接转成对应的AA、AB、AC实现类。其中的业务字段会丢失。
这就是疑问的地方??? 这里我们比较了一下fastJson和gson,最后采取gson来解决此问题。
fastJson 是通过注解形式。如:
@JSONField(serializeUsing=ToSystemNameSerializer.class)
这里ToSystemNameSerializer.class是我们自定义的转换类,需要实现ObjectSerializer和ObjectDeserializer分别是fastjson的编码器和解码器接口
Gson 是同通过注册TypeAdapter。如:
Gson.addTypeAdapter(Type,ToSystemNameSerializer)
然后使用gson来解析json,如果识别到Type类了,则使用我们定义的ToSystemNameSerializer来解析
JsonSerializer和JsonDeserializer分别是gson的编码器和解码器接口