jackson 在Java中使用POJO生成Avro模式文件,默认值为null

rekjcdws  于 2023-05-06  发布在  Java
关注(0)|答案(1)|浏览(147)

我尝试使用reference生成一个包含POJO的Avro模式文件。
有了这段代码,我可以生成一个文件,但我不知道如何在每个对象字段中添加"default" : null属性。

ObjectMapper mapper = new ObjectMapper(new AvroFactory());
AvroSchemaGenerator gen = new AvroSchemaGenerator();
mapper.acceptJsonFormatVisitor(SampleObject.class, gen);
AvroSchema schemaWrapper = gen.getGeneratedSchema();

org.apache.avro.Schema avroSchema = schemaWrapper.getAvroSchema();
String asJson = avroSchema.toString(true);
// ... (omitted) save string to .avsc file

对于POJO字段,我生成的是:

...
{
  "name" : "fieldName",
  "type" : [ "null", "string" ]
},...

但我想为所有字段生成的内容如下所示:

...
{
  "name" : "fieldName",
  "type" : [ "null", "string" ],
  "default" : null
},...

在使用POJO生成模式时,如何在所有生成的字段中添加"default" : null?我有POJO类,我想把它们转换成Avro模式文件。

cqoc49vn

cqoc49vn1#

你就快成功了。只需将类型和默认值定义为联合即可。就像这样:

{
  "name" : "fieldName",
  { "type" : [ "null", "string" ],
    "default" : null
  }
}

相关问题