返回顶部
首页 > 资讯 > 后端开发 > Python >使用java生成json时产生栈溢出错误问题及解决方案
  • 953
分享到

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

2024-04-02 19:04:59 953人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录java生成JSON时产生栈溢出错误环境这里会出现栈溢出错误json转换时出现栈内存溢出java生成json时产生栈溢出错误 环境 java + hibernate +html

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转换时出现栈内存溢出

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

  • jsonignore是jackson包下的
  • jsonfield是fastjson包下的

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

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

本文链接: https://lsjlt.com/news/151202.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作