簡體   English   中英

忽略傑克遜反序列化的某些字段而無需更改模型

[英]Ignore some fields deserialization with jackson without changing model

我正在尋找一種配置傑克遜解串器以忽略某些字段的方法。 我不想通過注釋模型來實現這一點,因為它是由另一個項目給出的。 我只是想通過構造解串器(ObjectMapper)來做到這一點。
可能嗎?

你必須做以下

1)編寫自己的Deserializer,以擴展JsonDeserializer

2)覆蓋反序列化方法並在忽略某些字段后返回您的類對象

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);

希望這能解決您的問題

您可以使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM