在Avro模式中允许枚举为空

时间:2018-10-08 16:13:37

标签: 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. Got VALUE_STRING

如果我使用空值{"myenum": null}对其进行测试,那么它将起作用。如何使枚举字段为可选?

1 个答案:

答案 0 :(得分:1)

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

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

应该为您解决问题。