Skip to content

Latest commit

 

History

History
31 lines (20 loc) · 1.86 KB

README.md

File metadata and controls

31 lines (20 loc) · 1.86 KB

jackson-avro-module

A jackson-module that allows serializing and deserializing generated avro specific record instances with the jackson ObjectMapper.

stable Build Status sponsored Maven Central

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 global ObjectMapper, so a change only required for SpecificRecordBase 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());