我在我的avro架构中有一个关于favorite_number的联合,它可以是null或int。当我json编码我得到的对象:
{“name”:“Alyssa”,“favorite_number”:{“int”:7},“favorite_color”:null}
我试图摆脱联合的类型指标,在这种情况下是int,所以它变成:
{“name”:“Alyssa”,“favorite_number”:7,“favorite_color”:“blue”}
avro时间表:
{"name": "person", "type": "record",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["null", "int"], "default": null},
{"name": "favorite_color", "type": "string"}
]
}
有没有办法做到这一点?谢谢!
编辑整个答案:)
看起来不可能直接使用Avro API。有一段时间的暂停请求可以为可空类型提供支持
https://issues.apache.org/jira/browse/AVRO-1582
编辑:
基于你的评论,我发现同样的问题试图在没有数据类型的情况下进行序列化,我最终使用了https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/generic/GenericData.html#toString(java.lang.Object)中定义的toString函数,唯一不能正常工作的情况是带有循环引用的模式。