java生成json时产生栈溢出错误问题的解决

来源:互联网 发布:centos安装deb 编辑:程序博客网 时间:2024/04/30 15:41

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/52460691
本文出自【我是干勾鱼的博客】

环境:

java + hibernate +html

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

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

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

注意这里,得到了一个关于Commentlist数组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里面的,而是需要字符串化,总之专递的尽量是字符串信息。

1 0
原创粉丝点击