当前位置: 首页 > 知识库问答 >
问题:

avro联合的json编码

宰父阳焱
2023-03-14

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

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

共有1个答案

齐胜涝
2023-03-14

编辑整个答案:)

看起来不可能直接使用Avro API。pull请求已挂起一段时间,以支持可为null的类型

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

 类似资料:
  • 我试图使用Kafka rest服务将JSON序列化为Avro对象,将JSON消息发送到Kafka主题,但Kafka rest无法接受JSON消息,错误如下: 我怀疑我正在使用的Avro架构存在问题,因为它是具有可空字段的嵌套记录类型。 Avro架构: Json 消息: 如果有人能帮助我了解问题所在,我将不胜感激。

  • 我正在尝试序列化一个avro模式,然后将其写入hortonworks模式注册表,但在写入操作期间收到以下错误消息。 这是avro模式 无论谁,如果我添加“null”作为联合的第一种类型,都会成功。avro联合类型需要“null”吗?在我的情况下,这将是不正确的数据表示,所以我不热衷于这样做。如果有什么不同,我使用avro 1.9.1。 此外,如果标签不正确,但找不到标签并且没有足够的代表来创建新标

  • 我试图建立一个具有联合数据类型支持成员记录类型的AVRO复杂记录。 我在尝试读取这种模式时出错。 我想知道-是否有可能声明这样的AVRO模式-其中一个字段类型是复杂用户定义消息结构的联合。 如果可能的话,你能让我知道我做错了什么吗?或者用union类型字段的类型定义举例说明这种结构吗? 我想使用AVRO的动态架构用法 - 因此请指定此架构文件运行时并将传入缓冲区解析为“request”/“resp

  • 我为简单的类层次结构自动生成了Avro模式: 看起来是这样的: 此模式适用于使用普通Avro API将数据从JSON读取到。我尝试实现的下一件事是使用将所有此类对象存储到单个拼花文件中: 此代码在第一行失败 难怪AvroSchemaConverter包含以下代码行: 我的模式类型是UNION。非常感谢将此UNION模式映射(合并)到RECORD模式或任何其他建议的任何想法/帮助。 解决方案 1)使

  • 我尝试使用Kafka流将一个带有String/JSON消息的主题转换为另一个作为Avro消息的主题。 并得到如下所示的异常: 这是正确的做法吗?我对Kafka溪流和阿夫罗是新来的

  • 问题内容: 我正在使用Postgres 9.4寻找一种在查询中合并两个(或更多)或列的方法。以下表为例: 查询是否可能返回以下内容: 不幸的是,我无法按此处所述定义函数。使用“传统”查询是否有可能? 问题答案: 这是可用于在PostgreSQL中创建json对象的内置函数的完整列表。http://www.postgresql.org/docs/9.4/static/functions- json.