{
"type": "record",
"name": "Person",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"}
]
}
Schema.Parser parser = new Schema.Parser();
Schema avroSchema = parser.parse(schema);
SpecificCompiler compiler = new SpecificCompiler(avroSchema);
compiler.setOutputCharacterEncoding("UTF-8");
compiler.compileToDestination(null, outputDirectory);
Person person = new Person();
person.setAge(25);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
DatumWriter<Person> datumWriter = new SpecificDatumWriter<>(Person.class);
Encoder encoder = EncoderFactory.get().binaryEncoder(outputStream, null);
datumWriter.write(person, encoder);
encoder.flush();
byte[] avroData = outputStream.toByteArray();
outputStream.close();
DatumReader<Person> datumReader = new SpecificDatumReader<>(Person.class);
Decoder decoder = DecoderFactory.get().binaryDecoder(avroData, null);
Person deserializedPerson = datumReader.read(null, decoder);