使用AVRO模式验证JSON有效负载,尤其是针对“固定”数据类型的

时间:2019-11-27 21:26:54

标签: json schema avro avro-tools

JSON有效载荷:

{
"BILLING_EVENT_RULE_MET_DT": "lsks",
"PlanType":"hhh"
}

AVRO模式:

{
  "name": "Subscription",
  "type":"record",
  "doc": "Subscription details",
  "fields": 
    [
    { "name": "BILLING_EVENT_RULE_MET_DT",  "type":[ "null","string"],"default": null },

    {"name": "PlanType",
    "type":
         {
         "name":"PlanType",
         "type": "fixed",
            "size": 4
         }
    }
    ]
}

ERROR:
The value [hhh] for field [PlanType] should be [FixedType <size: 4, name: PlanType, namespace: None, aliases: None>].

在验证它给我以下错误时,我应该在JSON有效负载中为PlanType字段写什么? 实际上,这是我要探索的所有事情,因为我想为类似于XML模式的AVRO模式中的字段定义maxlength和minlength。

1 个答案:

答案 0 :(得分:0)

如果“ PlanType”的字段大小不是常数,则不能使用“固定”类型。

如果数据是字符串,则可以使用“字符串”类型;如果数据类型是任何字节序列,则可以使用“字节”类型。

请注意,使用“字符串”或“字节”意味着它不能没有字符/零字节。

要启用空值,应使用并集类型(即'null'和'string'的并集或'null'和'bytes'的并集)。

没有办法将最小大小或最大大小作为avro模式的一部分。参见avro specification