jackson-avro-module
A jackson-module that allows serializing and deserializing generated avro specific record instances with the jackson ObjectMapper.
The problem
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.
Non working workarounds
- avro itself provides a
JacksonUtils
class that can ignore fields based on visibility. Problem: The feature is hidden and modifies the globalObjectMapper
, so a change only required forSpecificRecordBase
classes 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.
The solution
This library provides a single JacksonAvroModule
that uses a modified version of the jackson-databind-avro
modifier to exclude bean properties from serialization.
How to use
It is as simple as adding any other jackson-module to your ObjectMapper
configuration:
ObjectMapper om = new ObjectMapper()
.registerModule(new JacksonAvroModule());