分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

fastjson生成JSON字符串的时候出现$ref

发布时间:2023-09-06 01:18责任编辑:傅花花关键词:jsjson
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(略)}

fastjson生成JSON字符串的时候出现$ref

原文地址:http://www.cnblogs.com/shibazizhan/p/7688206.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved