微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

fastjson使用遇到的问题

一个需求

一个controller需要接受一个参数这个参数是一个接口,因为有多种实现,并且这个接口的实现类中的某个字段是一个数组,里面的成员也是接口,有多种实现

A {

private List<B>

}

使用的是FastJsonHttpMessageConverter字段转换,


于是让前端传一个@type

这样解决了前端到后端的问题,能够正常反序列化

但是后端到数据库保存的时候 JSON.toJSONString(a,SerializerFeature.WriteClassName)

发现只有最外面有A对象的类型,而内部B类型没有写上@type

这样从数据库读取就会有问题

通过ParseProcess定制反序列化

看了文档的这部分,发现这只是对一些多余字段进行反序列化,比如如下的场景

你在一个类中只写了一个getX方法,但是没有定义一个字段x,(fastjson是根据get set方法序列化的)这时候反序列化就会有一个字段x

ExtraProcessor就是让你给这种字段定义名称和类型的

使用serializeUsing制定属性的序列化类

使用了一个注解加在List<B>上,可以自定义序列化,加个类型,但是还需要自己把整个list里面的内容给序列化了。比较麻烦


ValueFilter使用这个比上面那个更麻烦,需要自己一层一层的解析,返回自己需要的value

因为他只遍历最外面的属性,让你决定每个value怎么写。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐