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]现象问题相关推荐

  1. 解决 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 ...

  2. 探索RequestBody报com.alibaba.fastjson.JSONObject cannot be cast to xxx

    今天使用RequestBody接受前端传过来的参数,以前接受字符串数组非常成功,这次把形参改成了List<User>,原本以为顺利接受参数并映射成User的list结构,结果竟然在我取us ...

  3. com.alibaba.fastjson.JSONObject之对象与JSON转换方法

    com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSON对象转换Java ...

  4. com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决

    项目开发中遇到过几次这个问题,所以记录一下,代码如下: 1 @PostMapping("/save-files") 2 public void addFiles(@RequestB ...

  5. 解决问题 com.alibaba.fastjson.JSONObject cannot be cast to xxx

    {"msg": "success","code": "success","data": [{&quo ...

  6. 使用com.alibaba.fastjson.JSONObject构造简单的JSON数据

    使用com.alibaba.fastjson.JSONObject构造一个简单的JSON数据,构造的数据类似于: {"data": {"jfhf": " ...

  7. 【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 ...

  8. 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 ...

  9. 解决阿里巴巴JSONObject工具 com.alibaba.fastjson.JSONObject cannot be cast to 的问题

    转换JSON的时候这么写 可以解决 使用阿里巴巴JSONObject工具com.alibaba.fastjson.JSONObject cannot be cast to的报错问题 List<B ...

最新文章

  1. line_profile逐行代码分析
  2. leetcode 752. Open the Lock | 752. 打开转盘锁(BFS)
  3. JavaScript: 取得 function 的所有参数名
  4. 【转】DICOM:DICOM三大开源库对比分析之“数据加载”
  5. Asp.net MVC - 使用PRG模式(附源码)
  6. Python __getattribute__ vs __getattr__
  7. 刷机包提取hex和mbn方法_小米平板2刷lineage os与remix os及其体验
  8. 高等数学第六版下册答案
  9. 前端面试题(一)(CSS篇)建议收藏,持续更新中...
  10. 主题:免费的论文查重网站 正文:给大家推荐一个免费的论文查重网站PaperPP:http://www.paperpp.com
  11. 电子元件的测量方法及在电路中的作用
  12. 引擎所有固定变量大全
  13. API等级和Android版本对应关系以及历史
  14. 书籍扫描图像几何畸变校正
  15. mysql跨平台迁移复制_手工 XTTS CPT 迁移-跨平台迁移数据库-阿里云开发者社区
  16. 5、使用bean的scop属性来配置bean的作用域
  17. Psychtoolbox刺激呈现工具包的安装及下载
  18. 中止执行后超过2年_失信被执行人怎么撤销 超过两年会撤销吗
  19. ARM工控主板LS1012A
  20. 实现一个自主飞行的无人机需要的技术:定位导航-环境感知-目标感知-控制规划

热门文章

  1. HashMap深度解析(二)
  2. (五)我的JavaScript系列:JavaScript的糟粕
  3. sublime text3 格式化html代码
  4. java与javascript之间json格式数据互转
  5. Facebook Auth API文档中没说清楚的事情 (2011-02-28更新)
  6. iframe 返回上一页_寻找高颜值小姐姐难吗!直到我在Github上发现了这个Python库
  7. 操作系统的进程状态变迁图_1.操作系统是干什么的?
  8. mysql 5.5 主从双向同步,请教mysql 定时 双向 主从同步問題
  9. 大工14春《计算机应用基础》在线测试2,大工14春《计算机应用基础》在线测试2...
  10. android软件查找号码位置,如何在Android中通过GPS获取位置时获取卫星名称或号码?...