杰克逊双向嵌套对象设置

时间:2015-03-26 13:41:42

标签: java json spring hibernate jackson

我在反序列化以下json时遇到了一些问题:

{
    children:[{name:"1c"},{name:"2c"},{name:"3c"}]
}

我的课程看起来像这样:

@JsonIdentityInfo(scope=ParentObject.class,generator = ObjectIdGenerators.PropertyGenerator.class, property="id")
public class ParentObject {
 int id;
@OneToMany(cascade = CascadeType.ALL,mappedBy="parent",orphanRemoval=true)
 Set<Child> children;
}

@JsonIdentityInfo(scope=Child.class,generator = ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Child {
 int id;
 String name;
 @ManyToOne
 ParentObject parent;
}

考虑到这一点,我希望Jackson能够自动设置ParentObject。

除了没有设置ParentObject之外,我给出的结构几乎是完美的。这是必要的,因为Hibernate将设置父级的id,然后根据此设置子级的id,这当前为null。

我最初使用JSONManagedReference和BackReference设置它,但它是单向的,当请求单个对象时,父对象将被忽略。

我怎样才能让它发挥作用? 谢谢! 汤姆

1 个答案:

答案 0 :(得分:0)

尝试使用@jsonignore @ManyToOne  ParentObject父项;

我认为反序列化时不会考虑它并给你一个父对象..

此致

普拉萨德