繁体   English   中英

用Jersey将pojo解析为Json

[英]Parse a pojo into Json with Jersey

我正在尝试将对象转换为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批注放在要忽略的吸气剂上。

这是我的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;
    }

因此,它适用于@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>

我该如何解决这个问题?

也许您的“奇怪的堆栈溢出异常”是由与Jackson的无限递归引起的,如本文所述 因此, @JsonManagedReference @JsonIgnore@JsonManagedReference@JsonBackReference可能是您的选择。

暂无
暂无

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

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