Search code examples
javajsonjackson

How can I tell jackson to ignore a property for which I don't have control over the source code?


Long story short, one of my entities has a GeometryCollection that throws an exception when you call "getBoundary" (the why of this is another book, for now let's say this is the way it works).

Is there a way I can tell Jackson not to include that specific getter? I know I can use @JacksonIgnore when I do own/control the code. But this is not case, jackson ends reaching this point through continuous serialization of the parent objects. I saw a filtering option in jackson documentation. Is that a plausible solution?

Thanks!


Solution

  • You can use Jackson Mixins. For example:

    class YourClass {
      public int ignoreThis() { return 0; }    
    }
    

    With this Mixin

    abstract class MixIn {
      @JsonIgnore abstract int ignoreThis(); // we don't need it!  
    }
    

    With this:

    objectMapper.getSerializationConfig().addMixInAnnotations(YourClass.class, MixIn.class);
    

    Edit:

    Thanks to the comments, with Jackson 2.5+, the API has changed and should be called with objectMapper.addMixIn(Class<?> target, Class<?> mixinSource)