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

    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一对多的问题(赶快记录一下)

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

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。