在我的avro架构中,我已经定义了一个像这样的字段
{
"name": "myfield",
"type": "string",
"default": ""
}
当我在java中构建我的avro对象时,我将myfield
设置为null
(我的代码只是将值从一个地方复制到另一个地方)
MyObject myObject = MyObject.newBuilder().setMyfield(null).build();
我最终得到了
myObject.getMyfield() == null
这是预期的行为吗?难道我做错了什么?我预计我们会以默认值""
结束。
因为当我尝试序列化对象(用于发送到kafka)时,null
不是此字段的有效值
在调用Builder
答案 0 :(得分:0)
我通过允许null
解决了这个问题。也许最好默认为null
(无意义)而不是""
(有一定意义)。
{
"name": "myfield",
"type": [
"null",
"string"
],
"default": null
}