繁体   English   中英

将 pojo 转换为 json 时出错(cxf JAX-RS:数据绑定)

[英]Error convert pojo to json(cxf JAX-RS : Data Bindings)

我有下一个 pojo:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "domain")    
@Entity
    class Domain {
      @ManyToOne 
      private Domain parent;
    
      @OneToMany //add column definitions as needed
      private List<Domain> subdomains;
    }

和 rs 服务:

@GET
@Path("/domains/{id}")
@Produces("application/json")
public Bus getDomains(@PathParam("uuid") String uuid){
    return domainsService.getByUuid(uuid);
}

当我尝试访问资源时,我得到一个循环并且

java.lang.StackOverflowError
    at com.sun.xml.txw2.StartTag.addNamespaceDecl(StartTag.java:158)
    at com.sun.xml.txw2.StartTag.getPrefix(StartTag.java:257)
    at com.sun.xml.txw2.DatatypeWriter$1$5.print(DatatypeWriter.java:114)
    at com.sun.xml.txw2.DatatypeWriter$1$5.print(DatatypeWriter.java:109)
    at com.sun.xml.txw2.Document.writeValue(Document.java:165)
    at com.sun.xml.txw2.StartTag.addAttribute(StartTag.java:135)
    at com.sun.xml.txw2.ContainerElement._attribute(ContainerElement.java:318)
    at com.sun.xml.txw2.ContainerElement._attribute(ContainerElement.java:313)

如何正确转换包含对自身的引用的类?

您正在进入无限循环,因为当您的子域尝试呈现其父域时,父域会呈现其所有子域,其中每个子域将再次尝试呈现父域,依此类推,直到您用完 memory。因此,要解决您的问题在Domain class 的parent属性上添加注释@JsonIgnore

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM