【发布时间】:2019-12-23 16:24:03
【问题描述】:
假设某个第三方库中有一个类层次结构。其中一个类具有@JsonValue 注释。它导致只有一个字段的序列化/反序列化。是否可以在不进行子类化的情况下忽略@JsonValue注解并序列化所有对象字段?
【问题讨论】:
标签: java json jackson jackson-databind
假设某个第三方库中有一个类层次结构。其中一个类具有@JsonValue 注释。它导致只有一个字段的序列化/反序列化。是否可以在不进行子类化的情况下忽略@JsonValue注解并序列化所有对象字段?
【问题讨论】:
标签: java json jackson jackson-databind
您可以定义一个 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 都被序列化了。
【讨论】: