java操作json对象出现StackOverflow错误的问题及解决
作者:xusheng__zhang 发布时间:2023-03-04 20:06:14
标签:java,json,对象,StackOverflow
java操作json对象出现StackOverflow错误
今天在做项目的时候,遇到一个非常怪异的问题。一个java实体类中存在多个属性,每一个属性都是JsonObject类型。
在程序中用setXXX方法对这些属性设置值的时候,竟然报了Stack Overflow的错误。仔细检查了一遍程序,确定没有循环引用和死递归的发生。最后经过和查阅相关资料,终于发现我用的JsonObject是net.sf.json包下的类。
在这个类库中的json对象可能会存在多个对象之间的相互引用,导致程序最终报出了Stack Overflow的错误。
解决方法
将成员属性的类型设置为String字符串,避免出现上面的情况。或者使用fastjson来处理,fastjson在处理json对象的时候不会出现上面说的情况。
记录一次json转换对象的异常
今天在写代码时碰到了这样一个问题,将Java对象转换为JOSN字符串时,出现了重复的字段“OPEN”和“TIMESTAMP”
这是Java对象代码
经实验发现只有这两个字段会出现重复情况,猜测可能时由于该字段是特殊别名
对实例类做如下改动
成功修复
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://blog.csdn.net/xusheng__zhang/article/details/77899371


猜你喜欢
- 目录1、Stream API2、ParallelStreams执行原理3、ParallelStreams注意事项前言:并行编程势不可挡,Ja
- 程序触发鼠标、键盘事件是C#程序设计中比较常见的功能,本文实例展示了C#中winform实现自动触发鼠标、键盘事件的方法,有不错的实用价值。
- 前言以多个客户端和一个服务端的socket通信为例,服务端启动时创建一个固定大小的线程池。服务端每接收到一个连接请求后(通信任务),交给线程
- 末日这天写篇博客吧,既然没来,那就纪念一下。这次谈谈自制控件,也就是自定义控件,先上图,再说1.扩展OpenFileDialog,在Open
- 1、SpringBoot配置文件1.1 优先级关于SpringBoot配置文件可以是properties或者是yaml格式的文件,但是在Sp
- redis redisson 集合操作相关类及接口Rlist:链表public interface RList<V> exten
- 前言我又搞回笃NET啦!java之路真是命运多舛,好事多磨。不过,也许我已经进入无招胜有招,博取众家之长、融会贯通的地步了。对于WebApi
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。
- 引言:在使用循环的时候,循环里面带有break、continue、return的时候经常弄混,今天特意整理了下,以待后用... f
- 在本篇中我要介绍两个概念,我觉得这两个东西必须一起来介绍,这样才能连贯。C# 2.0里我们已经匿名方法了,现在类型也玩起匿名来了,怪不得大家
- 实现步骤:工具:IDEA数据库版本:mysql5.7一、环境搭建1.创建springboot项目pom.xml2.pom.xml : spr
- 最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 U
- 目录微服务微服务架构SpringCould简介环境搭建1. 创建数据库2. 新建一个子模块api3. 新建一个子模块provider作为服务
- resultMap标签继承、复用、嵌套记录演示 Mybatis 中 resultMap 标签继承、复用(包括跨文件)以及多层嵌套的使用方法,
- AndroidManifest.xml <uses-feature>和<uses-permisstion>分析及比较
- 前言 侧滑的实现方式有很多方式来实现,这次总结的ViewDragHe
- 网络办公正逐渐成为常态,无纸化办公也是一个潮流,这二者需要电子签章,最简单的方法就是在纸上盖一个章然后扫描成电子图片文件,最后在你的系统加载
- c#异步操作,BackgroundWorker类的使用,可以在后台运行需要的代码逻辑。using System;using System.C
- 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验。京东和淘宝的物流顺序就是一个时间轴,想必大家都不陌生,如
- private void button1_Click(object sender, EventArgs e) {