允许枚举在avro模式中为空

vof42yt1  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(461)

在我的avro模式中,有一个字段叫做 myenum 类型 enum 具体如下:

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

我也想 null 被允许。如果我将类型更改为具有默认值的并集 null (正如这篇文章所建议的),它看起来是这样的:

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

当我用下面的json对象测试它时 {"myenum":"HEARTS"} ,我得到一个错误- Expected start-union. Got VALUE_STRING .
如果我用空值测试它 {"myenum": null} ,它起作用了。如何使枚举字段成为可选字段?

qcbq4gxm

qcbq4gxm1#

对于avro的json编码,需要为每个非空union值传递所需的类型。

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

应该帮你搞定。

相关问题