任何JSON数据的Avro模式

时间:2018-08-23 15:32:34

标签: json validation encode avro

我需要定义一个允许任何JSON数据的Avro模式。我正在重写一个现有的应用程序,新版本将需要有效负载来匹配特定的架构。但是,我们需要保持向后兼容,那就是荒凉的西部。
以前,我们没有架构,并且允许传递任何JSON。应用程序花费了大量时间来查找数据并从各种结构中进行解析。显然,这是一个非常脆弱且不可扩展的系统。在我们让所有客户转换之前,我们必须维护旧版本。因为我正在编码,所以我需要一个模式。我尝试了以下方法:

{ "namespace": "Clickstream", "doc": "This is the default schema for all inputs that don't define the schema.", "name": "legacy", "type":"map", "values":["string", "int", "long","boolean","float","double", "bytes", "null"] }

这适用于大多数情况,除了带有数组的情况外,例如:

{
   "actions":[
      {
        "type": "foo",
        "value": "brown"
      },
      { 
        "type": "bar",
        "value": "cow"
      }
   ]
}

我想要的是一个Avro模式,该模式将允许我传递任何东西,最好是JSON对象,但愿意传递任何东西。

0 个答案:

没有答案