【问题标题】:java method returning a huge list of same json datajava方法返回一个巨大的相同json数据列表
【发布时间】:2014-04-27 17:06:53
【问题描述】:

我有这样的方法

@ResponseBody
 @RequestMapping(method = RequestMethod.GET, value = "/getGroupList", produces = "application/json")
    public Map getGroups() {
        List<UserGroup> userGroups = userGroupService.getAllUserGroups();
        Map result = new TreeMap();
        result.put("groupList", userGroups);
        return result;
    }

当我加载页面 /getGroupList 时,它返回一个很长的 json 数据。当我调试代码时,我可以清楚地看到在 usreGroups 列表中只有 2 项。为什么方法 getGroups 会返回大量数据。此外,返回的数据以双引号结尾,看起来它直到不完整......

【问题讨论】:

  • 什么是UserGroup?你有循环引用吗?
  • 是的。它具有进一步包含对象的对象

标签: java json spring-mvc


【解决方案1】:

这是一个假设。如果您的 UserGroup 课程类似于

class UserGroup {
    User user;
    Group group;
}

这些类就像

class User {
    UserGroup userGroup;
}
class Group {
    UserGroup userGroup;
}

然后序列化过程将永远继续,因为序列化UserGroup 将尝试序列化User,这将尝试重新序列化相同的UserGroup 等等...

Spring 默认使用 Jackson 序列化为 JSON。 Jackson 对此有很多解决方案,例如@JsonBackReference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多