传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 播妞 黑马官方管理员   /  2019-1-10 17:17  /  93 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在前几天的时候,我使用fastjson的时候,发现一个问题,就是如果一个集合里面添加相同的一个对象,然后将集合转化为对应的json字符串,发送到页面去解析的时候,发现只能够读出第一个对象,后面的对象就读不出来,页面上显示的代码:


  从页面图片我们可以看到,添加了重复的seller之后,只有第一个可以正常显示,后面的都是显示为$ref:"$.rows[0].seller",出现这种现象的原因是fastjson开启了fastjson的“循环引用检测”机制,这种机制会让fastjson在对于将Java对象转化为对应的json对象的时候,同一个对象的使用,下面的对象都改为了对前面对象的应用,所以,这就是我们为什么看到"$.rows[0].seller"这个东西的原因,那么,我们只要讲这种“循环引用检测”机制关掉即可

  如果是直接使用fastjson的话,可以这样关掉:

  在将对象转化为json的时候,添加这个:SerializerFeature.DisableCircularReferenceDetect

  SerializerFeature.DisableCircularReferenceDetect:关闭fastjson的循环引用检测,例如:

  

  如果是是使用了spring+springmvc的方式的话,可以添加

  



作者:传智播客JavaEE培训学院

首发:http://java.itcast.cn


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马