使用 Microsoft-Avro-Core 进行序列化时包括命名空间 属性
Including the namespace property when Serializing using Microsoft-Avro-Core
我正在使用 Microsoft-Avro-Core nuget 包将 C# 对象序列化为 avro 文件格式。我遇到的问题是 avro 模式在 json 模式定义中包含一个命名空间 属性,它不包含在序列化 avro 文件的模式中。
例如
{
"name": "typeName",
"type": [
{
"type": "record",
"name": "recordName",
"namespace": "topLevelRecord.record_data",
"fields": [
]
},
"null"
]
}
序列化后,对于 avro,包含模式定义是在没有命名空间的情况下编写的,如下所示:
{
"name": "typeName",
"type": [
{
"type": "record",
"name": "recordName",
"fields": [
]
},
"null"
]
}
这给我们带来了一个问题,因为使用代码不再包含命名空间。我怎样才能告诉序列化器在序列化的 avro 文件中包含命名空间 属性。
设置 DataContract 属性的名称和命名空间属性不起作用。它只是在序列化名称 属性 前加上命名空间。这不是我们需要的。
我们正在使用 SequentialWriter 序列化记录集合。 AvroSerializationSettings 对象不包含 属性 来强制命名空间的序列化。
如有任何帮助,我们将不胜感激。
谢谢
所以经过一些研究,事实证明 RecordSchema 序列化程序不包含命名空间。查看 github 上的代码后,它使用 FullName 属性 作为名称并省略了命名空间。
我们没有定义模式。但是我们必须使用它。为了符合要求,序列化模式必须包含命名空间。
我正在使用 Microsoft-Avro-Core nuget 包将 C# 对象序列化为 avro 文件格式。我遇到的问题是 avro 模式在 json 模式定义中包含一个命名空间 属性,它不包含在序列化 avro 文件的模式中。
例如
{
"name": "typeName",
"type": [
{
"type": "record",
"name": "recordName",
"namespace": "topLevelRecord.record_data",
"fields": [
]
},
"null"
]
}
序列化后,对于 avro,包含模式定义是在没有命名空间的情况下编写的,如下所示:
{
"name": "typeName",
"type": [
{
"type": "record",
"name": "recordName",
"fields": [
]
},
"null"
]
}
这给我们带来了一个问题,因为使用代码不再包含命名空间。我怎样才能告诉序列化器在序列化的 avro 文件中包含命名空间 属性。
设置 DataContract 属性的名称和命名空间属性不起作用。它只是在序列化名称 属性 前加上命名空间。这不是我们需要的。
我们正在使用 SequentialWriter 序列化记录集合。 AvroSerializationSettings 对象不包含 属性 来强制命名空间的序列化。
如有任何帮助,我们将不胜感激。
谢谢
所以经过一些研究,事实证明 RecordSchema 序列化程序不包含命名空间。查看 github 上的代码后,它使用 FullName 属性 作为名称并省略了命名空间。
我们没有定义模式。但是我们必须使用它。为了符合要求,序列化模式必须包含命名空间。