toolisticon / jackson-avro-module

Serialize/Deserialize generated avro records to/from json using jackson objectMapper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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());

About

Serialize/Deserialize generated avro records to/from json using jackson objectMapper

License:Apache License 2.0


Languages

Language:Java 93.3%Language:Kotlin 6.7%