com.alibaba.fastjson.JSONObject循环给同一对象赋值会出现$ref:$[0]现象问题
1.今天定义了一个JSONObject对象,引用的com.alibaba.fastjson.JSONObject,循环给这个对象赋值出现"$ref":"$[0]"现象,
/*** fastjson中$ref对象重复引用问题* * 介绍:* FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。* 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。* * 用法:* JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);*/ 一个集合中,给相同的对象循环赋值时,它会认为是一个对象,就出现$ref,举例:
1 2 3 import com.alibaba.fastjson.JSONArray; 4 import com.alibaba.fastjson.JSONObject; 5 6 public class test { 7 8 public static void main(String[] args) { 9 JSONObject json = new JSONObject(); 10 JSONArray array = new JSONArray(); 11 for(int i=0;i<3;i++){ 12 json.put("id",i); 13 array.add(json); 14 System.out.println(array); 15 } 16 System.out.println(array); 17 } 18 }
上面的例子就会出现这个现象。(但是如果把JSONObject json = new JSONObject();放到for循环之内就不会出现,因为每次循环都会新建一个对象,彼此不一样) 正确的做法之一为,关闭检测,更改之后,
1 2 3 import com.alibaba.fastjson.JSON; 4 import com.alibaba.fastjson.JSONArray; 5 import com.alibaba.fastjson.JSONObject; 6 import com.alibaba.fastjson.serializer.SerializerFeature; 7 8 public class test { 9 10 public static void main(String[] args) { 11 JSONObject json = new JSONObject(); 12 JSONArray array = new JSONArray(); 13 for(int i=0;i<3;i++){ 14 json.put("id",i); 15 String str = JSON.toJSONString(json, SerializerFeature.DisableCircularReferenceDetect); 16 JSONObject jsonjson = JSON.parseObject(str); 17 array.add(jsonjson); 18 System.out.println(array); 19 } 20 System.out.println(array); 21 } 22 }
这个SerializerFeature.DisableCircularReferenceDetect就是关闭引用检测,就不会出现$ref了,
2.当然也可以吧JSONObject初始化放到for循环内,这样就不用关闭检测了。
操作网址:https://www.cnblogs.com/zj0208/p/6196632.html
自己的思路做个记录,如果侵权,请联系删除
转载于:https://www.cnblogs.com/tutubaobao/p/9760524.html
com.alibaba.fastjson.JSONObject循环给同一对象赋值会出现$ref:$[0]现象问题相关推荐
- 解决 fastjson 泛型报错 : java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to X
错误堆栈: Process: com.huawei.himovie1, PID: 20329java.lang.ClassCastException: com.alibaba.fastjson.JSO ...
- 探索RequestBody报com.alibaba.fastjson.JSONObject cannot be cast to xxx
今天使用RequestBody接受前端传过来的参数,以前接受字符串数组非常成功,这次把形参改成了List<User>,原本以为顺利接受参数并映射成User的list结构,结果竟然在我取us ...
- com.alibaba.fastjson.JSONObject之对象与JSON转换方法
com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSON对象转换Java ...
- com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决
项目开发中遇到过几次这个问题,所以记录一下,代码如下: 1 @PostMapping("/save-files") 2 public void addFiles(@RequestB ...
- 解决问题 com.alibaba.fastjson.JSONObject cannot be cast to xxx
{"msg": "success","code": "success","data": [{&quo ...
- 使用com.alibaba.fastjson.JSONObject构造简单的JSON数据
使用com.alibaba.fastjson.JSONObject构造一个简单的JSON数据,构造的数据类似于: {"data": {"jfhf": " ...
- 【FastJson】FastJson一个Bug java.util.LinkedHashMap cannot be cast to com.alibaba.fastjson.Jsonobject
1.背景 我们原本使用fastjson 1.2.47,后来要升级版本,升级到 1.2.70,升级之后,发现我们的程序报错 Exception in thread "main" ja ...
- com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject
com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject 原因: asInstanceOf要和i ...
- 解决阿里巴巴JSONObject工具 com.alibaba.fastjson.JSONObject cannot be cast to 的问题
转换JSON的时候这么写 可以解决 使用阿里巴巴JSONObject工具com.alibaba.fastjson.JSONObject cannot be cast to的报错问题 List<B ...
最新文章
- line_profile逐行代码分析
- leetcode 752. Open the Lock | 752. 打开转盘锁(BFS)
- JavaScript: 取得 function 的所有参数名
- 【转】DICOM:DICOM三大开源库对比分析之“数据加载”
- Asp.net MVC - 使用PRG模式(附源码)
- Python __getattribute__ vs __getattr__
- 刷机包提取hex和mbn方法_小米平板2刷lineage os与remix os及其体验
- 高等数学第六版下册答案
- 前端面试题(一)(CSS篇)建议收藏,持续更新中...
- 主题:免费的论文查重网站 正文:给大家推荐一个免费的论文查重网站PaperPP:http://www.paperpp.com
- 电子元件的测量方法及在电路中的作用
- 引擎所有固定变量大全
- API等级和Android版本对应关系以及历史
- 书籍扫描图像几何畸变校正
- mysql跨平台迁移复制_手工 XTTS CPT 迁移-跨平台迁移数据库-阿里云开发者社区
- 5、使用bean的scop属性来配置bean的作用域
- Psychtoolbox刺激呈现工具包的安装及下载
- 中止执行后超过2年_失信被执行人怎么撤销 超过两年会撤销吗
- ARM工控主板LS1012A
- 实现一个自主飞行的无人机需要的技术:定位导航-环境感知-目标感知-控制规划
热门文章
- HashMap深度解析(二)
- (五)我的JavaScript系列:JavaScript的糟粕
- sublime text3 格式化html代码
- java与javascript之间json格式数据互转
- Facebook Auth API文档中没说清楚的事情 (2011-02-28更新)
- iframe 返回上一页_寻找高颜值小姐姐难吗!直到我在Github上发现了这个Python库
- 操作系统的进程状态变迁图_1.操作系统是干什么的?
- mysql 5.5 主从双向同步,请教mysql 定时 双向 主从同步問題
- 大工14春《计算机应用基础》在线测试2,大工14春《计算机应用基础》在线测试2...
- android软件查找号码位置,如何在Android中通过GPS获取位置时获取卫星名称或号码?...