如何删除生成的 Avro 消息中的冗余嵌套数组?
How can I remove the redundant nested array in my generated Avro message?
我有一个 Avro 架构,其中一部分如下所示:
{
"name": "products",
"type": [
"null",
{
"type": "array",
"items": {
"name": "products_record",
"type": "record",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "status",
"type": "string"
},
{
"name": "error",
"type": [
"string",
"null"
]
}
]
}
}
],
"default": null
}
我的目的是最终得到一条具有 products
键的消息,其中值是一个项目数组,每个项目都有一个 id
、status
、并且可能是 error
.
我最终得到的是一条具有 products
键的消息,但该值是一个具有 array
键的对象,然后 该键 具有我期望的数组值。
例如
{
"products": {
"array": [
{
"id": "100",
"status": "VALID",
"error": null
},
{
"error": null,
"id": "200",
"status": "VALID"
}
]
}
}
有没有办法更改我的架构,以便我可以摆脱中间 array
密钥,并且用它编码的消息看起来像这样:
{
"products": [
{
"id": "100",
"status": "VALID",
"error": null
},
{
"error": null,
"id": "200",
"status": "VALID"
}
]
}
change my schema so that I can get rid of the intermediate array key
不要将其设为联合类型/可为空。
{
"name": "products",
"type": {
"type": "array",
...
如果需要,您可以使用空列表来推断无数据并在反序列化期间将其设置回 null
。
查看说明字段类型成为键的规范 - https://avro.apache.org/docs/current/spec.html#json_encoding
我有一个 Avro 架构,其中一部分如下所示:
{
"name": "products",
"type": [
"null",
{
"type": "array",
"items": {
"name": "products_record",
"type": "record",
"fields": [
{
"name": "id",
"type": {
"type": "string",
"logicalType": "uuid"
}
},
{
"name": "status",
"type": "string"
},
{
"name": "error",
"type": [
"string",
"null"
]
}
]
}
}
],
"default": null
}
我的目的是最终得到一条具有 products
键的消息,其中值是一个项目数组,每个项目都有一个 id
、status
、并且可能是 error
.
我最终得到的是一条具有 products
键的消息,但该值是一个具有 array
键的对象,然后 该键 具有我期望的数组值。
例如
{
"products": {
"array": [
{
"id": "100",
"status": "VALID",
"error": null
},
{
"error": null,
"id": "200",
"status": "VALID"
}
]
}
}
有没有办法更改我的架构,以便我可以摆脱中间 array
密钥,并且用它编码的消息看起来像这样:
{
"products": [
{
"id": "100",
"status": "VALID",
"error": null
},
{
"error": null,
"id": "200",
"status": "VALID"
}
]
}
change my schema so that I can get rid of the intermediate array key
不要将其设为联合类型/可为空。
{
"name": "products",
"type": {
"type": "array",
...
如果需要,您可以使用空列表来推断无数据并在反序列化期间将其设置回 null
。
查看说明字段类型成为键的规范 - https://avro.apache.org/docs/current/spec.html#json_encoding