我正在使用Sping Boot 开发一个Restful应用程序,我已经定义了如下的类:
class Organization {
String name;
}
class Base {
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
Organization org;
}
class Car extends Base{
//other members
}
class FlattenCar extends Car {
@JsonUnwrapped(prefix = "org_")
Organization org;
}
现在发生的事情是,反序列化org对象取决于第一次调用。这意味着,如果我第一次反序列化Car,接下来对反序列化FlattenCar的调用不会解包org,反之亦然。我知道我隐藏了org成员,但似乎第一次反序列化被缓存了!谁知道问题出在哪里,我该如何解决它?
1条答案
按热度按时间f4t66c6m1#
你的问题似乎是,在你的Base类中有选项READ_ONLY(仅用于序列化),当它应该是WRITE_ONLY时,如果只想在反序列化中考虑这个属性。
READ_ONLY:存取设定,表示只能读取属性以进行序列化,但不能在还原序列化期间写入(设定)。
WRITE_ONLY:存取设定,表示只能针对还原序列化写入(设定)属性,但无法在序列化时读取(取得),也就是说,属性的值不包含在序列化中。
输出:
请记住,在本例中,Car/CarFlatten类的to_string方法是从基类继承的。