使用java生成json时产生栈溢出错误问题及解决方案

作者:我是干勾鱼 时间:2023-01-09 17:41:10 

java生成json时产生栈溢出错误

环境

java + hibernate +html

本来,java中使用json事件很正常的事,但小心有的地方有点“坎儿”。

比如,在java中建立了json对象想传到前台去:

List<Comment> commentsList = commentMng.findByArticleId(articleid);
JSONArray jsonMembers = new JSONArray(commentsList);
...

注意这里,得到了一个关于Comment的list数组commentsList。如果Comment类型中的成员变量,都是普通的成员变量,那么ok,这么操作没问题。

如果Comment类型的表中包含外键,而Comment本身又与该外键对应的变量是多对一的关系,比如Comment中有个Article字段,多个Comment变量可以对应一个Article变量。

那么在这种情况下:

JSONArray jsonMembers = new JSONArray(commentsList);

这里会出现栈溢出错误

java.lang.StackOverflowError

在这种情况下,解决的办法就是将原有的List类型的list分解,也就是将commentsList分解,单独将变量传进JSONArray:

JSONArray jsonMembers = new JSONArray();
for ( Comment comment : commentsList) {
? ? JSONObject jsonObject = new JSONObject();
? ? jsonObject.put("id", blogComment.getId());
? ? ...
? ? ...
? ? jsonMembers.put(jsonObject);
}

当然那个多对一的字段信息如果想传递进去,也是不能直接将Comment类型的变量放到jsonObject里面的,而是需要字符串化,总之专递的尽量是字符串信息。

json转换时出现栈内存溢出

使用java生成json时产生栈溢出错误问题及解决方案

加上注解忽略这个字段,最好两个同时加

  • jsonignore是jackson包下的

  • jsonfield是fastjson包下的

有时候分不清就同时加上注解,以防万一

这个问题应该是我jpa一对多的问题(赶快记录一下)

来源:https://yuhaidong.blog.csdn.net/article/details/52460691

标签:java,json,栈溢出,错误
0
投稿

猜你喜欢

  • Java中的守护线程问题

    2023-09-13 11:49:23
  • C#将时间转成文件名使用方法

    2022-08-15 05:59:22
  • java实现录音播放功能

    2023-03-25 03:38:23
  • Android so的热升级尝试

    2023-08-07 22:41:59
  • Java判断字符串是否为IP地址的方法

    2023-07-06 15:02:58
  • C#中split用法实例总结

    2023-11-27 11:31:16
  • Android的RV列表刷新详解Payload与Diff方式异同

    2023-07-05 13:17:29
  • IDEA中打jar包的2种方式(Maven打jar包)

    2023-05-03 22:31:41
  • C#中事务处理和非事务处理方法实例分析

    2023-12-23 08:09:13
  • Java 由浅入深带你掌握图的遍历

    2022-05-21 07:21:44
  • C#获取每个年,月,周的起始日期和结束日期的方法

    2023-11-11 20:53:45
  • SpringBoot构建RESTful API的实现示例

    2022-04-13 14:45:08
  • C#正则实现Ubb解析类的代码

    2021-10-23 22:19:38
  • 高吞吐、线程安全的LRU缓存详解

    2021-10-01 01:40:28
  • Java Spring框架简介与Spring IOC详解

    2021-08-06 03:05:56
  • IDEA + Maven环境下的SSM框架整合及搭建过程

    2023-08-26 02:06:55
  • java实现List中对象排序的方法

    2023-11-08 21:36:29
  • Java多线程编程详细解释

    2022-12-22 10:19:41
  • 如何安装系统认证签名过的APK

    2023-07-24 21:35:40
  • Java拦截器和过滤器的区别分析

    2021-11-06 22:28:46
  • asp之家 软件编程 m.aspxhome.com