加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

fastjson使用遇到的问题

发布时间:2020-12-16 19:01:23 所属栏目:百科 来源:网络整理
导读:有一个需求 一个controller需要接受一个参数这个参数是一个接口,因为有多种实现,并且这个接口的实现类中的某个字段是一个数组,里面的成员也是接口,有多种实现 即 A { private ListB } 使用的是FastJsonHttpMessageConverter字段转换, 于是让前端传一个@

有一个需求

一个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怎么写。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读