net.sf.json.JSONException: There is a cycle in the hierarchy!

news/2024/9/29 3:28:54/

在用com.google.gson.JsonArray把list对象转jsonarray后,把jsonarray放入了新的json内时,异常net.sf.json.JSONException: There is a cycle in the hierarchy! 意思是:将Java对象转换为JSON时发现了层级(循环)引用。即Java对象之间存在循环引用,例如,对象A包含对对象B的引用,而对象B也包含对对象A的引用,这会导致在转换过程中形成一个无法解析的循环结构。

出现问题的代码如下

import com.google.gson.Gson;
import com.google.gson.JsonArray;net.sf.json.JSONObject dateItem = new net.sf.json.JSONObject();List<Map<String, Object>> list = dieCutDao.selectMysql(map);if (null == list || list.isEmpty()) {return;}logger.warn("{}", list.size());Gson gson = new Gson();JsonArray jsonArray = gson.toJsonTree(list).getAsJsonArray();dateItem.put("count", jsonArray.size());dateItem.put("data", jsonArray);// 异常在这一行发生

调整后代码如下

import com.google.gson.Gson;
import com.google.gson.JsonArray;net.sf.json.JSONObject dateItem = new net.sf.json.JSONObject();List<Map<String, Object>> list = dieCutDao.selectMysql(map);if (null == list || list.isEmpty()) {return;}logger.warn("{}", list.size());Gson gson = new Gson();JsonArray jsonArray = gson.toJsonTree(list).getAsJsonArray();//这里把com.google.gson.JsonArray对象转为字符串,没有异常了String jsonArrayStr = jsonArray.toString();dateItem.put("count", jsonArray.size());dateItem.put("data", jsonArray);

http://www.ppmy.cn/news/1530761.html

相关文章

docker 部署minio

docker部署minio 前提部署minio连接minio参考链接 前提 已安装docker 部署minio mkdir -p ~/minio/datadocker run \-p 9000:9000 \-p 9001:9001 \--name minio \-v ~/minio/data:/data \-e "MINIO_ROOT_USERROOTNAME" \-e "MINIO_ROOT_PASSWORDCHANGEME123&…

0-1开发自己的obsidian plugin DAY 4

今天想把源代码都放在/src文件夹下&#xff0c;然后在不同的.ts脚本中实现子模块功能 一步一步来&#xff0c;第一步先分离main出去以后引用格式类似&#xff1a; import { ExampleSettingTab } from ./settings; 然后把main.ts和settings.ts都移入新建的src/文件夹下。然后有…

uniapp小程序使用canvas画圆

<view class"container"><canvas canvas-id"arcCanvas" id"arcCanvas" class"arc-canvas" width"300" height"300"></canvas> </view> 最开始我使用…

Django一分钟:借助Django的认证系统快速实现RBAC权限校验以及Session会话

引言 Django自带一套认证与权限系统帮助我们快速的实现RBAC权限控制。今天我们要讨论的是Django的认证与权限系统怎么使用&#xff0c;以及Django在背后为我们做了些什么。 一、权限系统会创建数据库表 如果使用了Django的认证系统(在settings中注册appdjango.contrib.auth)…

【网络安全】网络基础第一阶段——第三节:网络协议基础---- VLAN、Trunk与三层交换技术

目录 一、交换机 1.1 交换机定义 1.1.1 交换机 1.2 工作原理 1.2.1 数据帧的转发 1.2.2 交换机处理数据帧的三种行为 1.2.3 交换机通信 二、虚拟局域网&#xff08;VLAN&#xff09; 2.1 虚拟局域网简介 2.1.1 为什么需要VLAN 2.1.2 广播域的分割与VLAN的必要性 2.…

毕设基于SSM+Vue3实现设备维修管理系统四:后台框架及基础增删改查功能实现

本章介绍后端基础框架及基础的增删改查功能实现&#xff0c;创建基础的dao、service即controller层相关的基类&#xff0c;并实现基础的增删改查相关功能。 源码下载&#xff1a;点击下载 讲解视频&#xff1a; SMMVUE3实现设备维修管理系统毕设&#xff1a;后端框架搭建及表外…

SQLServer TOP(Transact-SQL)

1、本文内容 语法参数最佳实践兼容性支持互操作性限制和局限示例 适用于&#xff1a; Microsoft Fabric Microsoft FabricWarehouse 中的 SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure SynapseAnalytics Analytics Platform System &#xff08;PDW&#xff09;SQL A…

高级Python Web开发架构与设计模式

高级Python Web开发架构与设计模式 目录 &#x1f3d7;️ 架构风格概述 1.1 &#x1f5bc;️ MVC与MTV架构模式的对比1.2 &#x1f310; RESTful与GraphQL的设计差异1.3 ⚙️ CQRS在Web应用中的应用1.4 &#x1f389; 事件驱动架构的应用与设计 &#x1f9e9; 设计模式详解 2…