如何只与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以外的属性。 结果不会被包装为对象,但是。