import java.util.ArrayList;
import java.util.List; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature; /**
* fastjson中$ref对象重复引用问题
*
* 介绍:
* FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。
* 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。
*
* 用法:
* JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
*/
public class TestFastJson { List<Person> list = new ArrayList<Person>();
Person p = new Person("ZhangSan", 23); /**
* 测试main
*/
public static void main(String[] args) {
// new TestFastJson().test1(); new TestFastJson().test2();
} /**
* 未关闭引用检测,转化字符串时会出现$ref
*/
public void test1() {
list.add(p);
list.add(p);
String jsonStr = JSON.toJSONString(list);
System.out.println(jsonStr);
// [{"age":23,"name":"ZhangSan"},{"$ref":"$[0]"}] } /**
* 关闭引用检测后,$ref的问题就会被解决
*/
public void test2() {
list.add(p);
list.add(p);
String jsonStr = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);
System.out.println(jsonStr);
// [{"age":23,"name":"ZhangSan"},{"age":23,"name":"ZhangSan"}]
} } class Person {
private String name;
private int age; // 构造函数
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
} // getters/setters(略) }

  

https://www.cnblogs.com/zj0208/p/6196632.html

Fastjson-fastjson中$ref对象重复引用问题:二的更多相关文章

  1. Fastjson.tojsonString中$ref对象重复引用问题

    import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; import com.alib ...

  2. Fastjson-fastjson中$ref对象重复引用问题

    当你有城市数据,你需要按国内.国际.热门城市分成数组的形式给出并输出为json格式. 第一个问题,你的数据格式,需要按字母类别划分,比如: "int": { "C&quo ...

  3. json中$ref对象重复引用问题

    FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测.关闭引用检测后,重复引用对象时就不会被$ref代 ...

  4. 解决FastJson中"$ref重复引用"的问题方法

    对象的引用重复使用造成了重复引用问题,Fastjson默认开启引用检测将相同的对象写成引用的形式: 1 2 3 4 5 {"$ref": "$"} // 引用根 ...

  5. com.alibaba.fastjson.JSON对类对象的序列化与反序列化

    1. 目标 把类的对象存储到字符串可存储 2. 类定义 public interface JsonInterface { } mport com.alibaba.fastjson.JSON; impo ...

  6. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  7. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  8. Andorid Binder进程间通信---Binder本地对象,实体对象,引用对象,代理对象的引用计数

    本文參考<Android系统源码情景分析>,作者罗升阳. 一.Binder库(libbinder)代码: ~/Android/frameworks/base/libs/binder --- ...

  9. js 操作对象的引用和操作实际对象的区分

    JavaScript高级程序设计-第3版-中 有这么一段话: 在操作对象时,实际上是在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的①. ① 这种说法不严密,当复制保存着对象的某个变 ...

随机推荐

  1. 阿里云 centos 服务器无法自动挂载 nas 的问题

    阿里云服务器 centos 7.3 ,开始是通过 fstab 配置的自动挂载: xxx.cn-hangzhou.nas.aliyuncs.com:/ /nas nfs4 auto 0 0 但服务器启动 ...

  2. 安装ipa文件

    https://www.jianshu.com/p/419a35f9533a 1.通过iTunes直接拖动到左侧的侧边栏(未尝试) 2.通过Xcode点击进入Devices管理,添加ipa文件进行安装 ...

  3. Angular2 File Upload

    Angular2 File Upload Install Install the components npm install ng2-file-upload --save github: https ...

  4. 并行开发-Paraller

    并行开发的概念 并行开发要做的事情就是将任务分摊给硬件线程去并行执行来达到负载和加速,传统的代码都是串行的,就一个主线程,当我们为了实现加速而开了很多工作线程,这些工作线程就是软件线程 Paralle ...

  5. vue:不同环境配置不同打包命令

    修改prod.env.js 'use strict'const target = process.env.npm_lifecycle_event;if (target == 'build') { // ...

  6. mssql卸载后重新安装 错误解决

    1.instance id already in use http://www.sqlservercentral.com/articles/MSSQLSERVER/161398/ 2.提示没有重启 删 ...

  7. python set的函数

    1. add() 为集合添加元素 2. clear() 移除集合中的所有元素 3. copy() 拷贝一个集合 4. difference() 返回多个集合的差集 5. difference_upda ...

  8. Asynchronous Programming

    https://msdn.microsoft.com/zh-cn/library/dd997423.aspx http://www.cnblogs.com/luminji/archive/2010/0 ...

  9. Asianux 7.3安装Oracle 11.2.0.4单实例体验

    环境:Asianux 7.3 需求:安装Oracle 11.2.0.4 单实例 背景:系统使用默认的最小安装部署,Oracle安装额外需要的包统一使用yum安装. 查看当前系统相关信息: [root@ ...

  10. tomcat安装与项目部署

    1.tomcat依赖:jdk jre,环境变量配置  java_home  jre_home 2.tomcat安装: 下载:http://tomcat.apache.org/    download ...