Maven: <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-avro</artifactId> <version>2.12.4</version> </dependency> Gradle: implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-avro:2.12.4' import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.avro.AvroMapper; import com.fasterxml.jackson.dataformat.avro.schema.AvroSchemaGenerator; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class AvroDataConverter { public static void main(String[] args) { List<Person> personList = new ArrayList<>(); ObjectMapper objectMapper = new ObjectMapper(); AvroMapper avroMapper = new AvroMapper(); try { AvroSchemaGenerator gen = new AvroSchemaGenerator(); objectMapper.acceptJsonFormatVisitor(objectMapper.constructType(Person.class), gen); org.apache.avro.Schema avroSchema = gen.getGeneratedSchema(); byte[] avroData = avroMapper.writer(avroSchema).writeValueAsBytes(personList); List<Person> convertedPersonList = avroMapper.readerFor(Person.class).with(avroSchema).readValue(avroData); for (Person person : convertedPersonList) { System.out.println(person.getName() + " - " + person.getAge()); } avroMapper.writer().writeValue(new File("person.avsc"), avroSchema); } catch (IOException e) { e.printStackTrace(); } } } class Person { private String name; private int age; public Person() {} public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }


上一篇:
下一篇:
切换中文