0 0

jackson转换json出现无限递归问题10

@Entity
public class Region extends AbstractModel implements Serializable {

    private static final long serialVersionUID = -5173717850565422292L;
    private Long          regionId;
    private String        regionName;
    private List<Region>   children    = new ArrayList<Region>();
    private Region        parent;
    private List<Shop>    shops       = new ArrayList<Shop>();

    @Id
    @GeneratedValue
    @Column(name = "region_id")
    public Long getRegionId() {
        return regionId;
    }

    public void setRegionId(Long regionId) {
        this.regionId = regionId;
    }

    @Column(name = "region_name")
    public String getRegionName() {
        return regionName;
    }

    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch =  FetchType.EAGER, mappedBy = "parent")
    public List<Region> getChildren() {
        return children;
    }

    public void setChildren(List<Region> children) {
        this.children = children;
    }

    @ManyToOne
    @JoinColumn(name = "parent_id")
    public Region getParent() {
        return parent;
    }

    public void setParent(Region parent) {
        this.parent = parent;
    }

    @ManyToMany
    @JoinTable(name = "shop_region_mapping",
            joinColumns = {@JoinColumn(name = "region_id")},
            inverseJoinColumns = {@JoinColumn(name = "shop_id")}
            )
    public List<Shop> getShops() {
        return shops;
    }

    public void setShops(List<Shop> shops) {
        this.shops = shops;
    }


用jackson转换json的时候会出现无限递归问题
org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.dingcan.manager.model.Region["children"]->org.hibernate.collection.internal.PersistentBag[0]->com.dingcan.manager.model.Region["parent"]->com.dingcan.manager.model.Region["children"]->
2012年5月01日 14:57

3个答案 按时间排序 按投票排序

0 0

这是继承引起的,并不是简单的属性包含,我也遇到这样一个问题,摸索中....

2013年6月29日 12:07
0 0

不要所有对象都转换,只转换你用到的属性.然后注意对象的互相引用

2012年5月17日 09:42
0 0

是两个类互相引用对方导致的

2012年5月16日 14:43

相关推荐

    解决spring mvc JSON 无限死循环

    然而,在某些情况下,由于对象之间的循环引用,可能会导致JSON序列化过程中出现无限递归的问题,进而引发StackOverflowError异常。本文将详细探讨这一问题,并提供几种有效的解决方案。 #### 问题描述 当我们在...

    json和bean转换

    转换JSON到Java Bean的过程通常涉及以下步骤: 1. 创建对应的Java Bean类,定义与JSON对象中的键相对应的私有成员变量,并生成getter和setter方法。 2. 使用JSON库提供的方法将JSON字符串解析成一个JSON对象(如...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    - **异常处理**:在转换过程中,可能会遇到JSON格式错误、字段不匹配等问题,应捕获并处理`JSONException`。 以上就是使用`net.sf.json.JSONObject`进行JSON操作的基本步骤和进阶技巧。在实际开发中,你可能还需要...

    jackjson类型转换各种方法

    杰克逊(Jackson)是Java领域中广泛使用的JSON处理库,它提供了强大的功能,使得JSON与其他数据类型(如Java对象)之间的转换变得简单且高效。本文将深入探讨Jackson框架在JSON转换中的各种方法,帮助你更好地理解和...

    JsonUtils(Json转换工具类)

    在进行JSON转换时,可能会遇到解析错误、格式错误等问题。`JsonUtils`应该有适当的异常处理机制,当出现错误时,能够抛出易于理解和处理的异常,而不是简单的运行时异常。 7. **性能优化**: 高效是工具类的一个...

    josn 各种转换

    本篇将深入探讨JSON的各种转换,包括JSON字符串与Java对象之间的转换,以及如何使用Jackson库进行高效操作。 一、JSON字符串与Java对象的转换 1. JSON字符串转Java对象 当你从服务器获取到JSON数据时,通常需要将...

    java转目录树json

    3. **转化成JSON**:有了目录树的模型后,我们可以使用`org.json`库(或者其他支持JSON的库,如Gson、Jackson)将其转化为JSON格式。`JSONObject`和`JSONArray`类可以帮助我们构建JSON对象。创建一个方法,接受`...

    例举fastJson和jackson转json的区别

    以下是对FastJson和Jackson转换JSON区别的详细分析: 1. **Jackson ObjectMapper转换JSON** Jackson的`ObjectMapper`类是其核心转换工具。例如,给定一个JSON字符串,`ObjectMapper`可以将它转换为Java对象。在...

    模仿BeJSON,HiJson格式化JSON,在AS控制台分层输出接口日志

    4. **深度控制**:为了防止无限递归,我们需要设定一个最大递归深度。当达到这个深度时,可以将剩余的JSON对象以省略号(...)表示。 5. **代码实现**:`JsonFomat`类可能会包含以下几个核心方法: - `printJson...

    将对象转换为json串的工具类.docx

    - 对于异常处理,打印堆栈跟踪但不中断整个转换过程,确保即使遇到问题也能尽可能多地转换其他字段 4. **辅助方法** - `map2Str`:处理 `Map` 类型的对象,遍历其所有键值对并转换为JSON格式 - `list2Str`:处理...

    http传输与json解析

    Android提供了多种处理JSON的库,如Gson、Jackson和org.json等。以org.json为例,解析JSON字符串的基本步骤如下: 1. 引入库:在Android项目中,首先需要添加org.json库的依赖。 2. 解析JSON字符串:使用`...

    将对象转换为json串的工具类.pdf

    但是,这个类没有处理循环引用的问题,如果对象图中存在循环引用,可能会导致无限递归。此外,它也没有处理枚举类型、自定义类型等特殊情况。在实际使用时,可能需要结合其他库,如Jackson或Gson,来提供更全面的...

    json解析工具类

    例如,递归解析JSON数组或递归地解析嵌套的对象。 在实际开发中,`JsonParser2Aoyun`可能还包含了对错误的处理,如自定义异常,以及对性能的优化,例如缓存已解析的JSON对象或使用预编译的JsonPath表达式。 总之,...

    json解析所需夹包

    5. **处理复杂JSON结构**:JSON可以包含嵌套的对象和数组,对于复杂的结构,可以使用递归或递归方法进行解析。 6. **类型转换**:在Java中,从JSON字符串转换到特定类型的Java对象时,需要进行类型转换。例如,从...

    Jackson资源jar包+api

    使用Jackson时,需要注意的点包括性能优化(如开启流模式、使用`writeValueAsBytes`代替`writeValueAsString`以减少内存消耗)、处理循环引用和避免无限递归等问题。 总之,Jackson是一个强大的JSON处理工具,其...

    处理JSON的jar包

    4. **处理复杂结构**:对于嵌套的对象和数组,`json-lib`提供了递归解析和构建的方法。 5. **自定义序列化和反序列化**:如果你需要对特定类型的对象进行特殊处理,可以通过实现`JSONAware`接口来自定义JSON转换...

    Jackson注解学习参考

    10. `@JsonIdentityInfo`: 处理循环引用或重复引用的问题,避免无限递归。 博客文章“Jackson注解学习参考”可能详细解释了这些注解的使用场景、配置选项以及如何在实际项目中应用它们。此外,还可能涵盖了与...

    遍历JSON文件内容

    3. **解析JSON内容**:使用Jackson库的`ObjectMapper`类将JSON字符串转换为Java对象。可以解析为`JsonNode`对象,这是Jackson库中的基础类型,可以用来遍历JSON结构。以下代码展示了如何做到这一点: ```java ...

    JSON与JAVA数据的相互转换 (2).pdf

    在Java中,为了实现JSON与Java数据类型的相互转换,通常会使用第三方库,如FastJSON、Jackson、Gson等。这里提到的是FastJSON,它是阿里巴巴提供的一个高性能的JSON库。 1. **JavaBean到JSON的转换** 要将...

    自定义方法实现msp和json互转(底层实现原理,绝对值)

    在实际开发中,我们通常会使用成熟的库,如Jackson、Gson或Fastjson,它们已经实现了高效且健壮的JSON与Java对象的转换。然而,了解自定义实现可以帮助我们更好地理解这些库的工作原理,以及如何针对特定需求进行...

Global site tag (gtag.js) - Google Analytics