如何让 Jersey 在 Hibernate 保留的对象中显示列表?
How do I get Jersey to show a List in an object persisted by Hibernate?
当我使用 Hibernate 检索对象时,Jersey 没有在 JSON 输出中显示列表。对象中的列表定义如下:
@OneToMany(cascade=CascadeType.ALL)
@OrderColumn
private List<Project> projects = new ArrayList<Project>();
当我检索对象(它也包含 projects
列表)时,我得到了普通字段(整数和字符串等),但不是这个列表。当我使用调试器时,我可以看到列表确实存在,但是 Jersey 没有在 JSON.
中输出它
看来您需要配置一个 JSON 序列化程序,例如 Jackson。 this question have some guidance on how to do that.
的答案
配置 JAXB 支持的 Jackson 后,您需要向项目添加适当的 JAXB 注释 class(基于 XML 或基于 JSON 的注释,序列化程序可以配置为支持其中一个或两者)。因此,例如将其添加到项目
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "project"))
public class Project {
应该足以将 Project 及其字段序列化为 JSON。
当我使用 Hibernate 检索对象时,Jersey 没有在 JSON 输出中显示列表。对象中的列表定义如下:
@OneToMany(cascade=CascadeType.ALL)
@OrderColumn
private List<Project> projects = new ArrayList<Project>();
当我检索对象(它也包含 projects
列表)时,我得到了普通字段(整数和字符串等),但不是这个列表。当我使用调试器时,我可以看到列表确实存在,但是 Jersey 没有在 JSON.
看来您需要配置一个 JSON 序列化程序,例如 Jackson。 this question have some guidance on how to do that.
的答案配置 JAXB 支持的 Jackson 后,您需要向项目添加适当的 JAXB 注释 class(基于 XML 或基于 JSON 的注释,序列化程序可以配置为支持其中一个或两者)。因此,例如将其添加到项目
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "project"))
public class Project {
应该足以将 Project 及其字段序列化为 JSON。