生成的Avro Builder set null不会默认覆盖

时间:2016-07-21 16:12:48

标签: java avro

在我的avro架构中,我已经定义了一个像这样的字段

{
  "name": "myfield",
  "type": "string",
  "default": ""
}

当我在java中构建我的avro对象时,我将myfield设置为null(我的代码只是将值从一个地方复制到另一个地方)

MyObject myObject = MyObject.newBuilder().setMyfield(null).build();

我最终得到了

myObject.getMyfield() == null

这是预期的行为吗?难道我做错了什么?我预计我们会以默认值""结束。

因为当我尝试序列化对象(用于发送到kafka)时,null不是此字段的有效值

在调用Builder

上的setter之前,是否需要检查此字段

1 个答案:

答案 0 :(得分:0)

我通过允许null解决了这个问题。也许最好默认为null(无意义)而不是""(有一定意义)。

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