com.alibaba.fastjson.JSONObject循环给同一对象赋值会出现“$ref“:“$[0]“现象问题
1、问题描述
有些场景下,我们会选择用JSONObject代替Map来处理业务逻辑,但是使用JSONObject时有一个需要注意的地方:在处理JSONObject对象时,引用的com.alibaba.fastjson.JSONObject,在一个集合中,循环给这个对象赋值会出现"$ref":" $ [0]",它会认为是一个对象,就出现$ref。
2、如何解决fastjson中$ref对象重复引用问题
FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。
关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常。
用法:JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);
3、举例说明
public static void main(String[] args) {JSONObject metricStatus = new JSONObject();metricStatus.put("STATUS",4);metricStatus.put("UPDATED_AT",currentTime);JSONObject ciMetricObject = new JSONObject();ciMetricObject.put("metric1",metricStatus);ciMetricObject.put("metric2",metricStatus);ciMetricObject.put("metric3",metricStatus);log.info("=====关闭引用检测前===:{}",JSON.toJSONString(ciMetricObject));log.info("=====多关闭引用检测后===:{}",JSON.toJSONString(ciMetricObject, SerializerFeature.DisableCircularReferenceDetect));}
- 关闭引用检测前:
{"metric1":{"STATUS":"4","UPDATED_AT":"20240521080808"},"metric2":{"$ref":"$.metric1"},"metric3":{"$ref":"$.metric1"},
}
- 多关闭引用检测后:
{"metric1":{"STATUS":"4","UPDATED_AT":"20240521080808"},"metric2":{"STATUS":"4","UPDATED_AT":"20240521080808"},"metric3":{"STATUS":"4","UPDATED_AT":"20240521080808"},
}
相关文章:
com.alibaba.fastjson.JSONObject循环给同一对象赋值会出现“$ref“:“$[0]“现象问题
1、问题描述 有些场景下,我们会选择用JSONObject代替Map来处理业务逻辑,但是使用JSONObject时有一个需要注意的地方:在处理JSONObject对象时,引用的com.alibaba.fastjson.JSONObject,在一个集合中,循环给这…...
【C++】详解AVL树——平衡二叉搜索树
个人主页:东洛的克莱斯韦克-CSDN博客 祝福语:愿你拥抱自由的风 目录 二叉搜索树 AVL树概述 平衡因子 旋转情况分类 左单旋 右单旋 左右双旋 右左双旋 AVL树节点设计 AVL树设计 详解单旋 左单旋 右单旋 详解双旋 左右双旋 平衡因子情况如…...
《计算机网络微课堂》2-2 物理层下面的传输媒体
请大家注意,传输媒体不属于计算机网络体系结构的任何一层,如果非要将它添加到体系结构中,那只能将其放在物理层之下。 传输媒体可分为两类:一类是导引型传输媒体,另一类是非导引型传输媒体。 在导引型传输媒体…...
【算法设计与分析】基于Go语言实现动态规划法解决TSP问题
本文针对于最近正在学习的Go语言,以及算法课实验所需内容进行Coding,一举两得! 一、前言 由于这个实验不要求向之前的实验一样做到那种连线的可视化,故可以用图形界面不那么好实现的语言进行编写,考虑到Go语言的…...
Golang单元测试
文章目录 传统测试方法基本介绍主要缺点 单元测试基本介绍测试函数基准测试示例函数 传统测试方法 基本介绍 基本介绍 代码测试是软件开发中的一项重要实践,用于验证代码的正确性、可靠性和预期行为。通过代码测试,开发者可以发现和修复潜在的错误、确保…...
mac下安装airflow
背景:因为用的是Mac的M芯片的电脑,安装很多东西都经常报错,最近在研究怎么把大数据集群上的crontab下的任务都配置到一个可视化工具中,发现airflow好像是个不错的选择,然后就研究怎么先安装使用起来,后面再…...
二进制中1的个数c++
题目描述 计算鸭给定一个十进制非负整数 NN,求其对应 22 进制数中 11 的个数。 输入 输入包含一行,包含一个非负整数 NN。(N < 10^9) 输出 输出一行,包含一个整数,表示 NN 的 22 进制表示中 11 的个数。 样例输入 100 …...
【面试干货】数据库乐观锁,悲观锁的区别,怎么实现
【面试干货】数据库乐观锁,悲观锁的区别,怎么实现 1、乐观锁,悲观锁的区别2、总结 💖The Begin💖点点关注,收藏不迷路💖 1、乐观锁,悲观锁的区别 悲观锁(Pessimistic Lo…...
移动端仪表盘,支持更多组件
05/22 主要更新模块概览 定位函数 快捷筛选 轨迹图表 时间组件 01 表单管理 1.1 【表单组件】- 表单关联新增支持自定义按钮样式 说明: 表单关联-关联数据按钮,原仅支持默认按钮样式,现增加关联数据按钮自定义功能,满…...
科技产业园3D探秘:未来科技之城的奇幻之旅
在数字时代的浪潮中,科技产业园区成为了推动城市经济发展、科技创新的重要引擎。 当我们打开科技产业园的3D可视化模型,仿佛穿越时空,来到了一个充满奇幻色彩的科技世界。在这里,高楼大厦鳞次栉比,绿色植被点缀其间&am…...
【Python搞定车载自动化测试】——Python基于Pytest框架实现UDS诊断自动化(含Python源码)
系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录💯💯💯 前言💯💯💯一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…...
探索SPI单线传输模式中时钟线与数据传输的简化
探索SPI单线传输模式:时钟线与数据传输的简化之道 在当今的嵌入式系统和微控制器通信中,串行外设接口(SPI)因其高速、全双工和同步的特点而广受欢迎。然而,随着设备尺寸和复杂性的不断减少,对SPI通信的简化…...
使用FFmpeg推流实现在B站24小时点歌直播
使用FFmpeg推流实现在B站24小时点歌直播 本文首发于个人博客 安装FFmpeg centos7 https://www.myfreax.com/how-to-install-ffmpeg-on-centos-7/ https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/ 使用FFmpeg在B站直播 https://zhuanlan.zhihu.com/p/2395…...
汽车防抱死制动系统ABS的单片机程序Proteus仿真设计
次设计对汽车防抱死系统进行简单的设计,针对车速、轮速两个信号进行分析,并根据最佳滑移率计算。采用对比实时滑移率对比分析,ECU控制制动器进行制动力调节使滑移率在制动过程处于最佳范围,保证系统具有良好制动性能。 汽车的制动液压调节器主要包含以下几个部件:调压电磁…...
IOS开发者证书快捷申请
App Uploader 在进行iOS应用开发中,可以借助appuploader辅助工具进行证书制作、上传和安装测试等操作。首先,您需要访问官方网站获取最新版本的appuploader。最新版本已经优化了与Apple账号的登录流程,无需支付688元,并提供了Windows版和Mac版供用户选择。下载完成后,解压…...
python 火焰检测
在日常生活,总是离不开火,有时候我们需要预防火灾发生,但是我们又不可能一直盯着,这时候我们就需要一款程序帮我们盯着,一旦发生火灾从而告知我们,今天就带大家编写这么一款应用。 安装需要的库 pip install opencv-python 代码实现 import cv2 # Library for…...
栈——顺序存储
#include<stdio.h> #define MaxSize 10 //栈的所有操作时间复杂度都是O(1) //定义 typedef struct{int data[MaxSize];int top; //栈顶指针,永远指向栈顶元素 }SqStack;//初始化,使栈顶指针指向-1 void InitStack(SqStack &S){S.top-1; }…...
军队仓库管理系统|DW-S301系统特点
部队仓库管理系统DW-S301系统通过数据采集、互联网和物联网技术,实现数字化智能管控,以提高军用物资的仓储准确率和流转率,缩短周转时间,降低库存成本,也有助于消除生产过程中的不确定性。 系统功能:通过部…...
MySQL和MongoDB数据库的区别
MySQL和MongoDB数据库的区别 随着大数据和云计算技术的兴起,数据库的选择成为开发者和架构师必须面对的重要决策。MySQL和MongoDB作为关系型数据库和非关系型数据库的代表,在各自领域都有着广泛的应用。本文将从多方面详细比较MySQL和MongoDB࿰…...
类脑计算和量子计算、人工智能的关系
According to www.iAsk.ai Ask Ai Search Engine: 类脑计算、量子计算和人工智能是三个不同但相关的领域。它们在不同层面上探索和利用了不同的计算模型和技术,但都旨在推动计算能力的发展和创新。 类脑计算是一种受到人脑神经系统启发的计算模型。它试图通过模拟…...
【AI CTO视角】算力不是堆资源,而是一场精细化工程
经常和行业内的朋友交流,发现一个普遍现象:一提到AI算力建设,很多人的第一反应还是堆卡、扩集群、上规模,仿佛GPU数量上去了,算力竞争力自然就来了。 但从实际落地与商业化视角看,尤其在大模型规模化服务、…...
让老式PL2303芯片在Windows 10/11上重获新生:实用兼容驱动方案
让老式PL2303芯片在Windows 10/11上重获新生:实用兼容驱动方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 前几天在整理工作室时,我发现了一…...
使用Microsoft Agent Framework构建C# AI代理握
简介 langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答 Chain链的组成 根据查阅的资料,langchain的chain链结构如下: $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...
如何让旧款Mac重获新生:OpenCore Legacy Patcher的系统延续方案
如何让旧款Mac重获新生:OpenCore Legacy Patcher的系统延续方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你面对一台性能尚可但被苹果官方…...
山地农田泵站数据采集远程监控系统方案
某地多为丘陵山地等地形,山顶水资源为丰富,水库蓄水充足,但由于山势陡峭、地势沟壑纵横,水流难以翻山越岭,导致各个农田难以得到充分灌溉,影响到当地的农民收益。如果采取各个农田分别开渠引水的方式&#…...
Carsim与Simulink联合仿真模型——AEB的cpar文件、simulink模型文件及...
Carsim与Simulink联合仿真模型——AEB 提供cpar文件,simulink模型文件,模型搭建过程文档在汽车开发领域,安全系统始终占据着举足轻重的地位。其中,主动安全辅助系统(AEB)作为现代汽车的安全核心,…...
剑指offer-61、序列化二叉树
请实现两个函数,分别⽤来序列化和反序列化⼆叉树⼆叉树的序列化是指:把⼀棵⼆叉树按照某种遍历⽅式的结果以某种格式保存为字符串,从⽽使得内存中建⽴起来的⼆叉树可以持久保存。序列化可以基于先序、中序、后序、层序的⼆叉树遍历⽅式来进⾏…...
终极IE8兼容性解决方案:jQuery-Knob与excanvas深度集成指南
终极IE8兼容性解决方案:jQuery-Knob与excanvas深度集成指南 【免费下载链接】jQuery-Knob Nice, downward compatible, touchable, jQuery dial 项目地址: https://gitcode.com/gh_mirrors/jq/jQuery-Knob 在现代Web开发中,jQuery-Knob作为一款优…...
WarcraftHelper:魔兽争霸III游戏优化与兼容性解决方案
WarcraftHelper:魔兽争霸III游戏优化与兼容性解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款针对魔兽争霸I…...
从零到精通:Ryujinx模拟器全方位技术指南
从零到精通:Ryujinx模拟器全方位技术指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款采用C#开发的开源Nintendo Switch模拟器,通过动态编译和…...
