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

使用Jersey将pojo解析为Json

姚淳
2023-03-14

我试图将一个对象转换为json格式,但它不起作用(我得到一个奇怪的堆栈溢出异常)。它从对象到XML都能完美地工作。我有一个简单的实体类User和另一个具有多个关系的类。

@Entity
@XmlRootElement
public class User extends Person {

    @Column(length = 60)
    private String email;

    @Column(name = "PSEUDO", length = 50)
    protected String pseudo;

    @ManyToMany(fetch = FetchType.LAZY ,targetEntity = Group.class)
    @OrderBy("group_name ASC")
    protected List<ItGroup> groups = new LinkedList<ItGroup>();

    ...

    getters

}

相关类

@Entity
@Table(name = "groups")
public class Group implements ItGroup, Serializable {

...
    @XmlTransient
    @ManyToMany(fetch = FetchType.LAZY,mappedBy = "groups",targetEntity = User.class)
    @OrderBy("email ASC")
    private List<ItUser> users = new LinkedList<ItUser>();
...

}

我将@XmlTransient注释放在我想要忽略的getter上。

下面是我的rest服务中的一个方法,它从用户的昵称返回用户

    @GET
    @Path("{nickname}")
    @Produces({"application/json"})
   // @Produces({"application/xml"})
    public ItUser getUserFromPseudo(@PathParam("nickname") String pseudo){

        ItUser user = this.daoUser.getUserFromPseudo(pseudo);

        return user;
    }

因此,它使用@products({“application/xml”})而不是@products({“application/json”})

我使用Glassfish 5,模块以这种方式包含在我的应用程序的父POM中,分成不同的模块。事实是,我甚至不知道我正在使用的球衣的实现...我读到moxy是最好的,它可以读取jaxb注释。

  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0</version>
    <scope>provided</scope>
  </dependency>

我怎样才能解决这个问题?

共有1个答案

祁英哲
2023-03-14

也许你的“奇怪的堆栈溢出异常”是由杰克逊的无限递归引起的,就像这篇文章一样。所以@JsonIgnore@JsonManaged参考@JsonBack参考可能是您的一个选项。

  • http://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
 类似资料:
  • 问题内容: 我的样子如下: 现在,每个元素具有相同的结构(假设一个POJO称为MessageDefault.java)。那么我怎么能把所有东西都当作一个??呢? 我正在使用gson进行解析。我也不能更改JSON响应。 编辑:: MessageDefault.java 它只是一切的结构。但是在JSON中,的每个子项都有不同的名称,例如POJO MessageDefault.java中所反映的名称。但

  • 我正在使用凌空OkHttp从服务器获取一些数据。 响应是一个包含JSON的字符串,我想使用GSON/POJO解析它。 我得到错误: 预期BEGIN_OBJECT,但在第1行第1列路径$上是STRING 尝试解析时。 原因:java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行第1列路径$ com.google.gson.stream.JsonRead

  • 我正在使用GSON解析一个JSON文件,并希望将这个JSON对象映射到一个POJO类。问题是JSON中的属性名没有camel-case,但我的java POJO对象具有camel-case属性名。 有没有任何想法没有任何表现打击? 例如:JSON文件中的属性名是'ordernumber',但在我的POJO类中,我用'Sales Number'作为属性名,而不是ordernumber。现在,我们如何

  • 我的如下所示: 现在,中的每个元素都有相同的结构(比如一个名为MessageDefault.java的POJO)。那么,如何将所有

  • 我有下面的JSON,我想解析到下面的bean类。 豆类 1 Bean类2 在这里,我无法使用下面的代码解析这些JavaPOJO。 jsonObjMapper.readValue(jsonString,DistributedCookieBean.class); 堆栈跟踪: org . code Haus . Jackson . map . jsonmappingexception:无法从START_

  • 问题内容: 我有一个对象,希望在JSON中作为RESTful资源使用。我已经启用了Jersey的JSON POJO支持(在web.xml中): 但是,当我尝试访问资源时,出现以下异常: 我要提供的类并不复杂,它只有一些公共final字段和一个设置所有这些的构造函数。字段是所有字符串,基元,与此类似的类或它们的列表(我尝试使用普通列表而不是通用List ,但无济于事)。有谁知道给什么?谢谢! Jav