我在我的avro架构中有一个关于favorite_number的联合,可以是null或int。当我json编码我得到的对象时:
{" name":" Alyssa"," favorite_number":{" int":7}," favorite_color&# 34;:null}
我试图摆脱union的类型指示符,在本例中为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"}
]
}
有办法做到这一点吗?谢谢!
答案 0 :(得分:0)
编辑完整答案:)
看起来不可能直接使用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函数,唯一不能正常工作的情况是带有循环引用的模式。