java使用jackson序列化/反序列化具有不同属性的子属性
我必须上一节课(A和B)
A{
a_id;
a_name;
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class,
property="b_name")
@JsonIdentityReference(alwaysAsId=true)
B b;
}
B{
b_id;
b_name;
}
要将对象A序列化为json,我需要b_name,而反序列化对象A时,我需要b_id
简言之,我希望通过父对象传递子字段的b_名称。反序列化时,我将获得b_id,因此它应该绑定到b对象(b_id)。因此,在序列化和反序列化时,相同的子对象应使用不同的属性
from server={a_id=1,a_name=“abc”,b=“pqr”}
from client={a_id=1,a_name=“abc”,b=1}
b是序列化时的b_名称,反序列化时的b_id
可能吗
# 1 楼答案
是的,这应该是可能的。 在序列化过程中,如果您的b_id将为null,并且您不希望它包含在json中,那么您可以使用:
在反序列化时,由于不会得到b_name,所以可以在类b级别使用
@JsonIgnoreProperties(ignoreUnknown = true)
。它告诉jackson忽略任何无法映射到现有java字段的JSON属性如果包含/排除字段的要求比这更复杂,那么可以使用JsonSerializer和JsonSerializer。 比如: