A jackson-module that allows serializing and deserializing generated avro specific record instances with the jackson ObjectMapper.
If you define your schema in avro and generate a class using the avro generator, the generated class contains fields (schema, specificData)
that can not be serialized by the default jackson ObjectMapper.
- avro itself provides a
JacksonUtilsclass that can ignore fields based on visibility. Problem: The feature is hidden and modifies the globalObjectMapper, so a change only required forSpecificRecordBaseclasses will affect all. - jackson on the other hand provides the
com.fasterxml.jackson.dataformat.avro.AvroSerializerModifier, but this one just ignores (current version 2.13.4) just one of the two needed properties.
This library provides a single JacksonAvroModule that uses a modified version of the jackson-databind-avro modifier to exclude bean properties from serialization.
It is as simple as adding any other jackson-module to your ObjectMapper configuration:
ObjectMapper om = new ObjectMapper()
.registerModule(new JacksonAvroModule());