<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-avro</artifactId>
<version>${jackson.avro.version}</version>
</dependency>
</dependencies>
json
{
"type": "record",
"name": "Person",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"},
{"name": "address", "type": "string"}
]
}
public class Person {
private String name;
private int age;
private String address;
}
public class AvroSerializationExample {
public static void main(String[] args) throws IOException {
Person person = new Person("John", 30, "123 Main St");
ObjectMapper objectMapper = new ObjectMapper(new AvroFactory());
objectMapper.registerModule(new AvroModule());
byte[] avroBytes = objectMapper.writeValueAsBytes(person);
System.out.println(Arrays.toString(avroBytes));
}
}
public class AvroDeserializationExample {
public static void main(String[] args) throws IOException {
byte[] avroBytes = new byte[] {...};
ObjectMapper objectMapper = new ObjectMapper(new AvroFactory());
objectMapper.registerModule(new AvroModule());
Person person = objectMapper.readValue(avroBytes, Person.class);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("Address: " + person.getAddress());
}
}