我正在寻找一种配置jackson反序列化器以忽略某些字段的方法。我不想通过注释模型来实现这一点,因为它是由另一个项目给出的;我只是想通过构造反序列化器(ObjectMapper)来做到这一点 有可能吗?
答案 0 :(得分:1)
你必须做以下
1)编写自己的Deserializer,扩展JsonDeserializer
2)覆盖deserialize方法并在忽略某些字段后返回您的类对象
3)使用ObjectMapper注册反序列化器
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(yourClass.class, new yourDerializer());
mapper.registerModule(module);
String newJsonString = "{\"id\":1}";
final yourClass yourClassObject= mapper.readValue(newJsonString, yourClass.class);
希望这能解决您的问题
答案 1 :(得分:1)
您可以使用Mix-In
注释来实现此目的。
class ThirdPartyReadOnlyClass {
private String ignoredPropertyFromThirdParty;
public String getIgnoredPropertyFromThirdParty() {
return ignoredPropertyFromThirdParty;
}
}
abstract class MixIn {
@JsonIgnore
String getIgnoredPropertyFromThirdParty();
}
您可以将Json注释放在MixIn类上,就像将它们放在原始模型类上一样。
配置对象映射器
objectMapper.addMixInAnnotations(ThirdPartyReadOnlyClass.class, MixIn.class);