FastJson序列化时候出现了$ref?还不赶紧学习下
2020-01-16 16:01:50来源:博客园 阅读 ()
FastJson序列化时候出现了$ref?还不赶紧学习下
最近在使用fastjson时候遇到一个问题,后台的数据转化为json字符串后发送到前端时候出现了$ref字样的东西,后来明白了这是引用,下面详细介绍下。
一、一个简单的例子
先来上一段代码,运行后打印的结果可能出乎意料,代码如下:
@org.junit.Test
public void testFastJson() {
Map<String, Object> dataMap = new HashMap<>();
List<User> userList1 = new ArrayList<>();
List<User> userList2 = new ArrayList<>();
for (int i = 0; i < 2; i++) {
User user = new User();
user.setId(i);
userList1.add(user);
userList2.add(user);
}
dataMap.put("userList1", userList1);
dataMap.put("userList2", userList2);
System.out.println(JSON.toJSONString(dataMap));
}
上面代码运行后打印结果如下:
{"userList1":[{"id":0},{"id":1}],"userList2":[{"$ref":"$.userList1[0]"},{"$ref":"$.userList1[1]"}]}
从打印结果可以看到,里面含有了$ref等字符,为什么为这样呢,这就是引用,在传输的数据中出现相同的对象时,fastjson默认开启引用检测将相同的对象写成引用的形式。
二、引用的分类
引用分为两类,重复引用和循环引用
- 重复引用
指一个对象重复出现多次
- 循环引用
指你心里有我,我心里有你(互相引用),这个问题比较严重,如果处理不好就会出现StackOverflowError异常
三、如何关闭引用
有两种方式可以关闭fastjson的引用支持。关闭引用检测,还能够提升序列化时的性能。
- 全局配置关闭
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();
- 非全局关闭
JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
四、引用的语法
FastJson序列化出现$ref的的解决方案介绍完成了,有问题欢迎留言沟通哦!
推荐阅读
1.一分钟带你了解下java中的fork/join!
2.fastjson自定义序列化竟然有这么多姿势?
3.SpringBoot2.0整合集成WebSocket,实现后端数据实时推送!
4.一分钟带你了解下MyBatis的动态SQL!
5.一分钟带你了解下Spring Security!
如果觉得文章不错,希望可以随手转发或者”在看“哦,非常感谢哈!
关注下方公众号后回复「1024」,有惊喜哦!
原文链接:https://www.cnblogs.com/haha12/p/12201634.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java---单链表
- java8 stream的分组功能,具体时候是真的好用 2020-06-10
- 面试的时候按照这个套路回答 Java GC 的相关问题一定能过 2020-06-08
- 是时候了解下软件开发的生命周期了! 2020-06-06
- 程序员:平时的你 VS 面试的你 2020-05-28
- Dubbo 2.7.7 发布,FastJson 升级了! 2020-05-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash