avon union的json编码

问题描述 投票:-1回答:1

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.