反序列化的时候出现eof exception_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默认开启引用检测将相同的对象写成引用的形式。

二、引用的分类

引用分为两类,重复引用和循环引用

  1. 重复引用

指一个对象重复出现多次

  1. 循环引用

指你心里有我,我心里有你(互相引用),这个问题比较严重,如果处理不好就会出现StackOverflowError异常

三、如何关闭引用

有两种方式可以关闭fastjson的引用支持。关闭引用检测,还能够提升序列化时的性能。

  1. 全局配置关闭
  JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask();
  1. 非全局关闭
 JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);

四、引用的语法

e70de9ed9cb0de8eb7bec0a7555a85cb.png

FastJson序列化出现$ref的的解决方案介绍完成了,有问题欢迎留言沟通哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云 linux mysql数据库_Linux Mysql数据库安全配置

Linux Mysql数据库安全配置目录&#xff1a;1.修改mysql管理员账号root的密码(2种方法)2.修改mysql管理员账号root3.mysql管理员root账号密码遗忘解决办法(2种方法)4.创建数据库用户(3种方法)5.mysql数据库权限管理本地权限网络权限撤销权限删除用户一、修改mysql管理员账号roo…

快速锁屏电脑快捷键_一学就会的8个电脑快捷键一定要掌握!堪称“高效”神器...

日常工作中&#xff0c;电脑是我们常用的设备&#xff0c;为了提高工作效率常常需要牢记一些电脑快捷键&#xff0c;那么有哪些电脑快捷键值得我们牢记呢&#xff1f;下面分享8个实用的电脑快捷键&#xff0c;关键时刻省时又省力哟&#xff01;#1 WindowsL 快速锁屏一般用在暂时…

left join 重复数据_Python数据分析整理小节

一、数据读取1、读写数据库数据读取函数:pandas.read_sql_table(table_name, con, schemaNone, index_colNone, coerce_floatTrue, columnsNone)pandas.read_sql_query(sql, con, index_colNone, coerce_floatTrue)pandas.read_sql(sql, con, index_colNone, coerce_floatTrue,…

win10文件显示后缀名_Win10一开机,内存占用竟高达60%?你可以尝试这样做

说到win10一开机&#xff0c;内存占用竟高达60%&#xff0c;你是怎么处理的呢&#xff1f;深受其害的朋友就此大展身手了&#xff0c;瞅瞅&#xff01;A&#xff1a;我16G内存&#xff0c;也是开机占用了70%多。百度找了很多方法都是不相关的答案&#xff0c;后来发现了关闭快速…

LSTM(长短期记忆网络)的设计灵感和数学表达式

1、设计灵感 LSTM&#xff08;长短期记忆网络&#xff09;的设计灵感来源于传统的人工神经网络在处理序列数据时存在的问题&#xff0c;特别是梯度消失和梯度爆炸的问题。 在传统的RNN&#xff08;循环神经网络&#xff09;中&#xff0c;信息在网络中的传递是通过隐状态向量进…

个人博客代码_Jekyll + Github Pages 搭建个人免费博客

今天亲手通过 Jekyll 搭建了一套免费博客&#xff0c;搭建步骤其实超级简单。你不需要购买域名&#xff0c;也不需要购买服务器&#xff0c;就可以轻松拥有你自己的博客。Jekyll 的核心是一个文本转换引擎。它的方便之处在于支持多种文本标记语言&#xff1a;Markdown&#xff…

js计算排名_今天,我们讲一下,快速排名与黑帽SEO

做个有心人(第7篇)在Web3.0时代&#xff0c;想要获得流量&#xff0c;就必须使用广告手段&#xff0c;用什么广告手段&#xff0c;需要切合自身情况来做&#xff0c;比如说&#xff1a;SEO是免费的&#xff0c;而SEM就是付费的。而SEO快速排名是什么鬼?真的快吗?快速排名究竟…

黑马h5学习代码_如何零基础制作酷炫实用的H5页面

H5页面已经成为了当下移动端主要的宣传方式,一个好的H5页面有极高的营销价值,无论是企业还是个人都非常需要。制作一个炫酷的H5页面一定要会写代码吗,下面千锋网络营销小编就给大家分享如何零基础制作炫酷实用的H5页面。支持H5的Web APP迅猛发展很重要的一点就是APP中的内容产生…

bin文件如何编辑_如何为高通固件创建rawprogram0和patch0文件

这是一个分步教程&#xff0c;显示如何为Qualcomm固件创建rawprogram0.xml和patch0.xml文件。要求下载并安装Python https://www.python.org/downloads/release/python-2710/下载高通GPTtool [ 登录/注册免费下载]下载Notepad https://notepad-plus-plus.org/downloads/来自…

iframe 页面富文本框数据怎么保存_文字太多PPT怎么做都丑?估计是没注意这些细节!...

秋叶 PPT 双 11 大促返场最后 1 天全场精品课享年度超值价千万别错过啦&#xff01;作者&#xff1a;洁洁编辑&#xff1a;躺糖大家好&#xff0c;我是洁洁&#xff01;作为每天倾听你们的困惑的小编之一&#xff0c;我 get 到了一个你们平常做 PPT 会碰到的最头疼的问题&#…

835 由于安全层无法对远程计算机进行身份验证_vscode 插件Remote-ssh远程wsl调试python

解决远程ssh端口非22的问题&#xff0c;见文末参考文献&#xff1a;Developing on Remote Machines using SSH and Visual Studio Code​code.visualstudio.com使用SSH进行远程开发Developing on Remote Machines using SSH and Visual Studio Code使用SSH进行远程开发在Visual…

vue实现查询多条记录_vue.js 实现天气查询

效果预览&#xff1a;http://songothao.gitee.io/weather_query_based_on_vuejs/ 项目已上传码云&#xff1a;叁贰壹/vuejs实现天气查询知乎视频​www.zhihu.com一、使用 axios vue.js:axios-get请求&#xff1a;axios.get(地址?keyvalue&key2value2).then(function(resp…

idea序列化自动生成_serialVersionUID在数据序列化中重要性

作用用于判断序列化文件是否已经失效(过期)。序列化的时候会把这个ID写到文件里。读的时候会把这个ID和代码里的ID比较&#xff0c;如果不一致&#xff0c;表示文件里的已经失效。(will result in an InvalidClassException.)值写为多少你可以写为1L&#xff0c;也可以让IDEA帮…

python找与7相关的数_用python统计并输出1000以内所有能同时被3和7整除的数的个数?...

展开全部 len([i for i in range(1,1001) if i%3i%70]) #!/usr/bin/python3 for i in range(1, 100): if i % 3 0 and i % 7 0: print(i) 100以内能同时被21133&#xff0c;5&#xff0c;7整除的数&#xff0c;除非是52610。 #include int main() {int i,n0; for(i0;i<100…

贝塞尔曲线 java_贝塞尔曲线理论及实现——Java篇

贝塞尔曲线贝塞尔曲线(The Bzier Curves)&#xff0c;是一种在计算机图形学中相当重要的参数曲线(2D&#xff0c;3D的称为曲面)。贝塞尔曲线于1962年&#xff0c;由法国工程师皮埃尔贝塞尔(Pierre Bzier)所发表&#xff0c;他运用贝塞尔曲线来为汽车的主体进行设计。线性曲线给…

java连接access_关于k8s下使用Ingress保持长连接的异常情况排查

写在前面的话应某位友人需求&#xff0c;帮整理下工作中的发生的一些值得记录的文章。于是在友人描述后&#xff0c;为其整理为了文章&#xff0c;供大家一起参考探讨。问题描述在我们中应用有一个使用到Http Long Poll的场景&#xff0c;它需要一个http请求保持最长30秒&#…

罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732E电磁流量计对环境和温度的限制

今天我们来说说美国罗斯蒙特8732E电磁流量计对环境和温度的限制&#xff01;工作温度-40 到 60C(-40 到 140F)&#xff0c;无本地操作界面-20 到 60C(-4 到 140F)&#xff0c;有本地操作界面当温度低于 -20C 时&#xff0c;本地操作界面 (LOI) 将无显示储存-40 到 85C(-40 到 1…

python字符串定义符_python入门——定义字符串

坚持每天更新&#xff0c;帮助入门python。kali linux 小伙伴们&#xff0c;大家好&#xff0c;今下午我们一起学习在python中定义字符串。 那么什么是字符串呢&#xff1f;字符串或串(String)是由数字、字母、下划线组成的一串字符。说白了&#xff0c;就是一堆字符。 在pytho…

耳机不分主从是什么意思_开学必备高性价蓝牙耳机,学生党时尚配件推荐

耳机自从手机出世之后就一直伴随着我们&#xff0c;作为手机的最佳搭档被我们使用&#xff0c;像现如今流行的蓝牙耳机我们就经常使用&#xff0c;大学生也是差不多每天都用得着&#xff0c;听歌、散步、玩游戏、看剧等哪都看得到它的身影&#xff0c;当然蓝牙耳机价格也有高低…