gpt4 book ai didi

c++ - 包含多个数组的 Avro union

转载 作者:行者123 更新时间:2023-11-30 05:09:50 25 4
gpt4 key购买 nike

我正尝试在我们的软件中使用 C++ avro 库,但遇到了重大障碍。我有一个包含一系列类型的“值”类,我想使用 avro 来读/写它。这不仅包括简单类型,还包括类型的 std::vectors、任意类等等。

我正在尝试为我的“值”类指定一个 avro 模式。在我的示例中,我将它限制为空、整数、长整数、整数数组和长数组。

我的模式是一个包含两个字段的记录,一个标识包含的类型,一个 union 用于保存包含的对象。我的架构如下...

{
"type": "record",
"name": "Value",
"fields": [
{
"name": "ilk",
"type": "string"
},
{
"name": "contents",
"type": [
"null",
"boolean",
"int",
{
"type": "array",
"items": "int"
},
"long",
{
"type": "array",
"items": "long"
}
]
}
]
}

我没有指定 JSON,但构建了一个打印出以上内容的 avro C++ 架构层次结构。但是验证该模式层次结构失败。嗅探 C++ 代码,它会阻止 union 中有多个数组或映射,即使数组或映射中的类型不同。

这实际上是 avro 标准的一部分还是 C++ 实现中的错误?我知道两次指定相同的类型是一件愚蠢的事情,但我不认为允许包含不同类型的数组和映射。

最佳答案

我其实不认为这是你想要做的。您要做的是创建一个具有不同类型的数组。像这样。

{
"namespace": "example.avro",
"type": "record",
"name": "Example",
"fields": [
{
"name": "values",
"type":
{
"type": "array",
"items": ["int", "string"]
}
}
]
}

这将创建一个可以有两个简单类型的数组。 “int”或“string”。您可以在其中弹出任何复杂类型。

关于c++ - 包含多个数组的 Avro union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45965783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com