如何只与jackson序列化一个孩子的ID

有没有一个内置的方式来只使用jackson(rapidxml.jackson 2.1.1)序列化的孩子的ID? 我们希望通过具有Person引用的REST发送Order 。 然而,person对象是相当复杂的,我们可以在服务器端刷新它,所以我们需要的只是主键。

或者我需要一个自定义的序列化器? 或者我需要@JsonIgnore所有其他属性? 当请求一个Order对象时会阻止Person数据被发回吗? 我不知道如果我需要这个,但是如果可能的话我想控制它。

有几个方法。 首先是使用@JsonIgnoreProperties从小孩中删除属性,如下所示:

 public class Parent { @JsonIgnoreProperties({"name", "description" }) // leave "id" and whatever child has public Child child; // or use for getter or setter } 

另一种可能性,如果子对象总是序列化为id:

 public class Child { // use value of this property _instead_ of object @JsonValue public int id; } 

还有一种方法是使用@JsonIdentityInfo

 public class Parent { @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") @JsonIdentityReference(alwaysAsId=true) // otherwise first ref as POJO, others as id public Child child; // or use for getter or setter // if using 'PropertyGenerator', need to have id as property -- not the only choice public int id; } 

这也可以用于序列化,并忽略id以外的属性。 结果不会被包装为对象,但是。