json - 允许枚举在 Avro 模式中为空

标签 json apache-kafka schema avro

在我的 Avro 架构中,我有一个名为 myenum 的字段,类型为 enum,如下所示:

{
"name": "myenum",
    "type": {
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }
}

我还希望允许 null。如果我将类型更改为默认值为 null 的联合(如 this post 中所建议),它看起来像这样:

{
"name": "myenum",
    "type": ["null", {
        "type": "enum",
        "name": "Suit",
        "symbols": ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
    }]
}

当我使用以下 JSON 对象 {"myenum":"HEARTS"} 对其进行测试时,出现错误 - Expected start-union。获得了 VALUE_STRING

如果我用空值 {"myenum": null} 测试它,它会工作。如何使枚举字段成为可选字段?

最佳答案

对于 Avro 的 JSON 编码,您需要为每个非空联合值传递预期的类型。

{"myenum": {"string": "HEARTS"}}

应该可以为您解决问题。

关于json - 允许枚举在 Avro 模式中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52706315/

相关文章:

Node.js : which keys in req. 主体存在于模式中

java - jackson 序列化 Collections.unmodifiable*

ruby-on-rails - 为什么在 Ubuntu 中安装 JSON gem 时会出错?

c - 将名称/值对写入 JSON 对象

apache-spark - 基于流的应用程序中的受控/手动错误/恢复处理

Spring 应用程序未使用 SSL 连接到 Kafka

mysql - 如何使用 mongify 将两个表合并为一个表

php - 从 url php 获取用户 ID

python - _pickle.PicklingError : Could not serialize object: TypeError: can't pickle _thread. RLock 对象

node.js - 如何在 Mongoose 的数组中使用不同类型的模式?