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

news/2024/7/8 2:00:45

当你有城市数据,你需要按国内、国际、热门城市分成数组的形式给出并输出为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);

  

 

转载于:https://www.cnblogs.com/achengmu/p/10100744.html


http://www.niftyadmin.cn/n/2571496.html

相关文章

ipython的安装

linux下python的查看[rootcentOS64A67 ~]# uname -r //查看内核版本2.6.32-573.el6.x86_64 //我的CentOs6.7呵呵[rootcentOS64A67 ~]# rpm -q python //查看安装的python的rpm包python-2.6.6-64.el6.x8…

FastStone Capture(FSCapture)

FastStone Capture(FSCapture) 注册码 企业版序列号&#xff1a; name&#xff1a;bluman serial/序列号/注册码&#xff1a;VPISCJULXUFGDDXYAUYF FastStone Capture 注册码 序列号&#xff1a; name/用户名&#xff1a;TEAM JiOO key/注册码&#xff1a;CPCWXRVCZW30HMKE8KQQ…

.NET Core 跨平台发布(dotnet publish)

.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。 前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布&#xff08;dotnet publish&#xff09;。 .NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。 .NET Core and ASP.N…

swift 报错 Call can throw, but it is not marked with 'try' and the error is not handled

在开发中使用正则表达式时报了这样的问题&#xff1a;Call can throw, but it is not marked with try and the error is not handled&#xff0c;即&#xff1a; let regex:NSRegularExpression NSRegularExpression(pattern: "^1[3|4|5|7|8][0-9]{9}$", options: …

利用碎片化时间Get Linux系统

利用碎片化时间Get Linux系统 起初&#xff0c;我做着一份与IT毫无关系的工作&#xff0c;每月领着可怜的工资&#xff0c;一直想改变现状&#xff0c;但无从下手&#xff0c;也就是大家熟知的迷茫。我相信&#xff0c;每一个人都会或多或少的经历过迷茫&#xff0c;迷茫每一个…

c语言先低字节后高字节,Modbus协议试验台控制设备基础协议.pptx

Modbus协议_试验台控制设备基础协议2016-10-28更新一、Modbus串行链路协议基本要求物理层RS232 接口或 RS485 接口&#xff1a;RJ45&#xff0f;DB 9 连接器与电缆相接数据信号发送速率:要求 9600bps 波特率&#xff0c;推荐 19200bps 波特率 串行链路系统上的Modbus 只应用于短…

单向板的受力示意图_桁架钢筋混凝土叠合板设计要点

叠合板及现浇板使用范围&#xff08;1&#xff09;《装标》5.5.2条规定高层装配整体式砼结构中&#xff0c;楼盖应符合下列规定: ①结构转换层和作为上部结构嵌固部位的楼层宜采用现浇楼盖;②屋面层和平面受力复杂的楼层宜采用现浇楼盖&#xff0c;当采用叠合楼盖时&#xff0c…

Linux Centos 下安装npm 实测可用

转载地址 https://blog.csdn.net/u012129607/article/details/60966045 1.root 登录linux 2.没有目录就自己创建一个 cd /usr/local/node/ 3.下载安装包 wget https://npm.taobao.org/mirrors/node/v4.4.7/node-v4.4.7-linux-x64.tar.gz 4.解压安装包 tar -zxvf node-v4.4.7-li…