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


    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(略)
    
    }
  • 相关阅读:
    Java POI 导出EXCEL经典实现 Java导出Excel
    Sublime Text 3 相关
    phonegap 4.2 环境搭建 及 项目创建 运行
    Js 简单分页(一)
    VC调试闪退解决办法
    查找一个数中1的个数
    居中详解
    解决ajax跨域请求 (总结)
    js实现css3的过渡,需要注意的一点(浏览器优化)
    reflow和repaint(摘录自张鑫旭的翻译)
  • 原文地址:https://www.cnblogs.com/shibazizhan/p/7688206.html
Copyright © 2020-2023  润新知