{
"type": "record",
"name": "Person",
"fields": [
{"name": "name", "type": ["string", "null"]},
{"name": "age", "type": "int"}
]
}
{
"name": "John",
"age": 25
}
如果 name 字段为 null,则这个属性应该省略不传,而不是写成 "name": null
。
// 读取 Avro schema 文件
Schema schema = new Schema.Parser().parse(new File("person.avsc"));
// 读取 JSON 数据文件
File file = new File("person.json");
DataFileReader reader = new DataFileReader<>(file, new GenericDatumReader<>(schema));
// 遍历数据
while (reader.hasNext()) {
GenericRecord record = reader.next();
String name = (String) record.get("name");
Integer age = (Integer) record.get("age");
// 处理记录
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}