我无法解析我的AVRO json模式。 我尝试使用以下库中的 avro.ParseSchema 函数:https://github.com/go-avro/avro。 但是,我收到以下错误消息:
未知类型名称:数组
我已经尝试解决了很长时间,但是我似乎无法做到这一点。 我实现了以下结构:
import (
"bytes"
"log"
avro "gopkg.in/avro.v0"
)
type Matrix struct {
UID int `avro:"uid"`
Data [][]float64 `avro:"data"`
}
type MatrixContainer struct {
MatricesArray []*Matrix `avro:"matrices_array"`
}
//Somewhere in here it goes wrong
schema, err := avro.ParseSchema(`{
"type": "record",
"name": "MatrixContainer",
"fields": [
{
"name": "matrices_array",
"type": "array",
"items": {
"type": "record",
"name": "Matrix",
"fields": [
{"name": "uid","type":"int"},
{"name": "data","type":"array","items":
{"type":"array","items":"double"}
}
]
}
}
]
}`)
任何帮助将不胜感激。
答案 0 :(得分:0)
在记录字段中,您不能说“ type”:“ array”;您需要使“类型”成为有效的Avro模式,而不是有效的Avro类型。
尝试以下操作:
{
"type": "record",
"name": "MatrixContainer",
"fields": [
{
"name": "matrices_array",
"type": {
"type": "array",
"items": {
"type": "record",
"name": "Matrix",
"fields": [
{
"name": "uid",
"type": "int"
},
{
"name": "data",
"type": {
"type": "array",
"items": {
"type": "array",
"items": "double"
}
}
}
]
}
}
}
]
}
ref:https://avro.apache.org/docs/1.8.1/spec.html#schema_record