我有以下对象:
[
{"ProductId":10,"ProductName":"some name"}
]
有时我只有null
。我想为此提出一个架构。但它似乎不起作用:(。
我尝试了以下两个:
{
"name": "ProductsOrNull",
"type": ["null", {
"type": "array",
"name": "Products",
"items": {
"type":"record",
"name": "Product",
"fields": [{
"name":"ProductId",
"type":"long"
}, {
"name":"ProductName",
"type":"string"
}
]
}
}],
"default": null
}
但在运行Exception in thread "main" org.apache.avro.SchemaParseException: No type: <...>
时,java -jar avro-tools-1.8.2.jar fromjson --schema-file prod.avsc prod.json > lol.avro
失败了。
我也用同样的错误来解决这个问题:
{
"type": ["null", "array"],
"name": "Products",
"items": {
"type":"record",
"name": "Product",
"namespace": "{{ dataModelSchema }}",
"fields": [{
"name":"ProductId",
"type":"long"
}, {
"name":"ProductName",
"type":"string"
}
]
}
}
我真的不明白问题出在哪里以及两者之间有什么区别。
答案 0 :(得分:1)
基于您的架构,您的json对象应该看起来像
{
"ProductsOrNull" :
[
{"ProductId":10,"ProductName":"some name"}
]
}
无法使用没有字段名称的数组定义和avro架构。