当前位置: 首页 > 知识库问答 >
问题:

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

邵刚洁
2023-03-14

我有下一个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)

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

共有1个答案

邵献
2023-03-14

您正在进入一个无限循环,因为当您的子域尝试呈现其父级时,父级会呈现其所有子域,其中每个子域将再次尝试呈现父级,依此类推,直到您运行内存溢出。因此,为了解决您的问题,请在Domain类中的属性上添加注释@JsonIgnore

 类似资料:
  • E/AndroidRuntime:FATAL EXCEPTION:主进程:com.example.ahsan.ethlon2,PID:11641java.lang.NumberFormatExcture:对于输入字符串:"" 在java.lang.Integer.parseInt(Integer.java:608) 在java.lang.Integer.parseInt(Integer.java:

  • 我正在尝试将JSON转换为POJO类。这个JSON是我从第三方REST API调用得到的,我想把它转换成POJO类。为此,我使用jackson databind jar,下面是我代码的一部分。 这里现在不是POJO类,我声明了Object类型的ModelObjcet变量,我的问题是我们是否需要在将JSON转换为POJO之前创建带有必填字段和getter setter方法的POJO类? 如果是,那么

  • 问题内容: 我正在将Jersey用于REST WS,并且得到的响应为JSON。 我想将此响应转换为POJO。怎么做 ? 问题答案: 要在Java和JSON之间进行转换,有很多可供选择的API 。 您可以“手动”遍历JSON组件并提取值以填充Java对象,或者可以使用JSON到Java的绑定API来解决许多低级映射问题。

  • 我正在尝试在Apache Camel中将一个简单的JSON文件转换为POJO,但我无法让它工作。 路线.java WeatherForecast.java 天气预报json 我收到的错误是:没有可用的主体类型:java.io.输入流,但具有类型:org.acme.bindy.ftp.天气预报[]on:weather.json.由:没有类型转换器可用于从类型:org.acme.bindy.ftp.天

  • 最近,我开始将我的Android项目从Java转换为Kotlin。我在许多类中使用改型从API获取数据。在我的项目中,有很多POJO,我需要手动将它们转换为数据类,因为它与AndroidStudio的自动转换器工具不兼容。 假设我有模型类: 在Kotlin中有没有什么好方法可以直接将这个模型类转换为数据类?这个类可以手动转换,但我有一些类有大量的变量,手动将其转换为数据类会很麻烦。

  • 我试图将一个JSON请求传递给我的服务器,在那里控制器在将JSON转换为POJO时遇到一个错误。 我不确定代码出了什么问题。我对Spring还是个新手,所以我很感激你的帮助。