我的 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
EDITING:
根据您的评论,我发现尝试在没有数据类型的情况下序列化同样的问题,我最终使用了中定义的 toString 函数https://avro.apache.org/docs/1.8.1/api/java/org/apache/avro/generic/GenericData.html#toString(java.lang.Object),它无法正常工作的唯一情况是对于具有循环引用的模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)