avon union的json编码

时间:2017-08-10 22:07:06

标签: java json avro

我在我的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"}
           ]
   }

有办法做到这一点吗?谢谢!

1 个答案:

答案 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函数,唯一不能正常工作的情况是带有循环引用的模式。