reith
reith

Reputation: 2088

Ignore some fields deserialization with jackson without changing model

I'm looking for a way to configure jackson deserializer to ignore some fields. I don't want to achieve this by annotating model since It's out given by another project; I just want to do it by constructing deserializer (ObjectMapper) to do so.
Is it possible?

Upvotes: 0

Views: 1133

Answers (2)

Yogesh Badke
Yogesh Badke

Reputation: 4587

You can achieve that using Mix-In annotation.

class ThirdPartyReadOnlyClass {
   private String ignoredPropertyFromThirdParty;

   public String getIgnoredPropertyFromThirdParty() {
      return ignoredPropertyFromThirdParty;
   }
}

abstract class MixIn {
  @JsonIgnore
  String getIgnoredPropertyFromThirdParty();
}

You can put json annotations on MixIn class as if you are putting them on original model class.

Configuring object mapper

objectMapper.addMixInAnnotations(ThirdPartyReadOnlyClass.class, MixIn.class);

Upvotes: 3

Pankaj Goyal
Pankaj Goyal

Reputation: 49

you have to do following

1)write your own Deserializer which extends JsonDeserializer

2) override deserialize method and return your class object after ignoring some of the fields

3) register your deserializer with 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);

Hope this will solve your problem

Upvotes: 1

Related Questions