假设您将此 AVDL 作为简化示例:
@namespace("example.avro")
protocol User {
record Man {
int age;
}
record Woman {
int age;
}
record User {
union {
Man,
Woman
} user_info;
}
}
在 python 中,您无法正确序列化说明类型的对象,因为不允许使用以下语法:
{"user_info": {"Woman": {"age": 18}}}
唯一被序列化的对象是
{"user_info": {"age": 18}}
丢失所有类型信息和DatumWriter
拾取通常是匹配字段集的第一条记录,在本例中为 a Man
。
上述问题在使用 Java API 时效果很好。
那么,我在这里做错了什么?序列化和反序列化是否可能在 Python 的 Avro 实现中不是幂等的?