我在 Kafka 主题上注册的 AVRO 架构中使用以下定义
{
"doc": "list of employees",
"name": "employees",
"type": [
"null",
{
"type": "array",
"items": {
"avro.java.string": "String",
"type": "string"
}
}
],
"default": null
}
预期输出:
"employees" : ["Ajay", "Vijay"]
或 null
但低于一:
"employees": {
"array": [
"Ajay", "Vijay"
]
}
我检查了下面的架构,它工作正常。如果我添加默认 null ,那么它会创建额外的数组字段
{
"doc": "list of employees",
"name": "employees",
"type":
{
"type": "array",
"items": {
"avro.java.string": "String",
"type": "string"
}
}
}
您指定字段
employees
(作为联合类型)的方式是让 Avro 在您的字段周围添加额外的包装器,并使其保持您所看到的方式。
您可以做的就是直接将字段初始化为空数组(
[]
),而不是将默认数组声明为 null。这样,您将获得与当前行为类似的行为,而无需额外的嵌套。
这就是您的架构应该的样子:
{
"doc": "list of employees",
"name": "employees",
"type": {
"type": "array",
"items": "string"
},
"default": []
}