zoukankan      html  css  js  c++  java
  • Fastjson-fastjson中$ref对象重复引用问题

    当你有城市数据,你需要按国内、国际、热门城市分成数组的形式给出并输出为json格式。

    第一个问题,你的数据格式,需要按字母类别划分,比如:

    "int": {
                "C": [
                    {
                        "acityId": "1001",
                        "acityIndex": "C",                  
                        "cityCname": "成都",
                        "cityEname": "Chengdu",
                        "isAbroad": 0,
                        "isHot": 1
                    }
                ],
                "L": [
                    {
                        "acityId": "1002",
                        "acityIndex": "L",
                        "airportCname": "拉萨",                 
                        "cityCname": "拉萨",
                        "cityEname": "Lasa",
                        "isAbroad": 0,
                        "isHot": 1
                    }
                ]
            },
    

      

    然后我们可以通过,Map<字母string, List<城市信息object>>这样来保存数据

    //保存首字母对应的list
    Map<String,List<Object>> patientDetectionMap = new HashMap<String,List<Object>>();
    //保存所有的首字母
    

      

    当你for循环的时候,发现这个城市,既满足国内城市,也满足热门城市,那么就会造成某条内容一样的城市信息fastJson数据的时候,出现:

    $ref对象重复引用问题

    那么怎么解决呢:

    在你要JSON.toJsonString的时候加入

    SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测
    

      

    /**
     * fastjson中$ref对象重复引用问题
     * 
     * 介绍:
     * FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。
     * 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。
     * 
     * 用法:
     * JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
     */
    

      

    return JSON.toJSONString(list(你的数据), SerializerFeature.DisableCircularReferenceDetect);
    

      

  • 相关阅读:
    div中子div在firefox ie 水平居中对齐
    Access数据库自定义连接字符串(详细有图百度文档)
    ASP页面乱码
    国内开源asp.netCMS汇总
    sql 2005
    卡巴斯基授权key导入方式方法及其导入key基本原理
    关于SqlServer服务无法启动的症状分析和解决方法
    js下流媒体的在线播放
    用JS+vml作三维报表
    了解嵌入式数据库(sqlite,firebird)
  • 原文地址:https://www.cnblogs.com/achengmu/p/10100744.html
Copyright © 2011-2022 走看看