让我们假设某些第三方库中有一个类层次结构。这些类之一具有@JsonValue
批注。它仅导致一个字段的序列化/反序列化。是否可以忽略@JsonValue
注释而不进行子类化并序列化所有对象字段?
答案 0 :(得分:3)
您可以定义MixIn并通过属性或getter覆盖@JsonValue
-取决于注释在第三方库中的设置位置。
假设我们有一个Pojo
类,其中有一个@JsonValue
带注释的成员prop
:
class Pojo {
@JsonValue
private String prop;
private String prop2;
// getters and setters
}
然后我们定义如下的抽象MixIn
类,覆盖特定的成员或方法:
abstract class MixIn {
@JsonValue(false) // either annotating members
private String prop;
@JsonValue(false) // or annotating methods
abstract String getProp();
}
可以将其添加到ObjectMapper
中,如下所示:
objectMapper.addMixIn(Pojo.class, MixIn.class);
现在prop
和prop
都已被序列化,而不仅仅是prop2
。