AvroUnion的JSON数据映射问题。
创始人
2024-11-13 08:30:04
0
  1. 定义 Avro Schema 时,使用 Union 类型。比如下面这个例子中,name 字段可以是字符串类型,也可以是 null 类型:
{
    "type": "record",
    "name": "Person",
    "fields": [
        {"name": "name", "type": ["string", "null"]},
        {"name": "age", "type": "int"}
    ]
}
  1. 传递 JSON 数据时,使用 Avro 的 JSON 编码规则。比如下面这个例子中,name 字段是否为 null 通过缺失来表示,而不是使用值为 null 的属性:
{
    "name": "John",
    "age": 25
}

如果 name 字段为 null,则这个属性应该省略不传,而不是写成 "name": null

  1. 在代码中,使用 Avro 的 DataFileReader 或 GenericData.parseReader 方法解析 JSON 数据。具体示例代码如下:
// 读取 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);
}

相关内容

热门资讯

透视了解!wepokerplu... 透视了解!wepokerplus到底是挂了吗(透视)总是真的是有辅助下载(有挂总结)-哔哩哔哩1.w...
透视透视挂!pokemmo手机... 透视透视挂!pokemmo手机版修改器(透视)其实存在有辅助插件(有挂规律)-哔哩哔哩1、透视透视挂...
透视app!pokemmo内置... 透视app!pokemmo内置修改器(透视)原来真的有辅助软件(真是有挂)-哔哩哔哩1、金币登录送、...
透视辅助!wepoker开脚本... 透视辅助!wepoker开脚本视频(透视)一贯有辅助软件(了解有挂)-哔哩哔哩1、全新机制【wepo...
透视美元局!wpk安卓下载辅助... 透视美元局!wpk安卓下载辅助(透视)总是真的有辅助工具(有挂秘诀)-哔哩哔哩1、wpk安卓下载辅助...
透视透视!拱趴大菠萝辅助神器(... 透视透视!拱趴大菠萝辅助神器(透视)一贯真的有辅助神器(有挂透视)-哔哩哔哩1、拱趴大菠萝辅助神器透...
透视挂透视!wepoker轻量... 透视挂透视!wepoker轻量版透视(透视)果然有辅助插件(有挂分享)-哔哩哔哩1、透视挂透视!we...
截至发稿!智星德州插件最新版本... 截至发稿!智星德州插件最新版本更新内容详解(透视)其实存在有辅助插件(有挂方法)-哔哩哔哩1)智星德...
来临!sohoo竞技联盟辅助器... 来临!sohoo竞技联盟辅助器(透视)竟然是真的辅助app(有挂方针)-哔哩哔哩1、任何sohoo竞...
近年来!德州来玩辅助器(透视)... 近年来!德州来玩辅助器(透视)好像存在有辅助下载(今日头条)-哔哩哔哩1、完成德州来玩辅助器辅助器v...