【问题标题】:Parse a pojo into Json with Jersey使用 Jersey 将 pojo 解析为 Json
【发布时间】:2018-05-22 15:49:48
【问题描述】:

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

@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 上。

这是我的休息服务中的一个方法,它从用户的昵称返回用户

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

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

        return user;
    }

所以它适用于 @Produces({"application/xml"}) 而不是 @Produces({"application/json"})

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: java json jaxb jersey glassfish-5


    【解决方案1】:

    也许你的“奇怪的堆栈溢出异常”是由杰克逊的无限递归引起的,就像在this 帖子中一样。所以@JsonIgnore@JsonManagedReference@JsonBackReference 可能是您的选择。

    【讨论】:

    • 感谢您的回答。我与另一个类有 manyToMany 关系,在该类上,用户集合是瞬态的,但它可能被忽略了。我需要尝试。感谢您的文档。
    猜你喜欢
    • 2023-03-17
    • 2013-02-02
    • 1970-01-01
    • 2016-06-20
    • 2011-04-26
    • 2018-02-22
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多