我正在创建一个Avro Schema来表示我的对象,并且我想知道处理包含多个结构的数组的正确方法是什么。例如,我的对象看起来像这样的JSON:
{
"id": 665534346251,
"events": [
{
"id": 665534346314,
"type": "Comment",
"author_id": 377633942574,
"body": "x.",
"html_body": "x",
"plain_body": "x.",
"public": true,
"attachments": [],
"audit_id": 665534346251
},
{
"id": 665534346394,
"type": "Create",
"value": "a",
"field_name": "subject"
},
{
"id": 665534346454,
"type": "Create",
"value": [
"xn",
"x",
"a"
],
"field_name": "tags"
}]}
是否可以表示“事件”,然后avro选择适合每个对象的模式?
答案 0 :(得分:0)
如果包含字段,则可以创建一个对象,但是通过联合定义可以使某些对象成为可选对象。
以发布的示例为例,请参见底部的两个字段
"id": 665534346314,
"type": "Comment",
"author_id": 377633942574,
"body": "x.",
"html_body": "x",
"plain_body": "x.",
"public": true,
"attachments": [],
"audit_id": 665534346251
"field_name": union<null, string>
"value": union<null, array>
使字符串值成为单个值列表。