当前位置: 首页 > 知识库问答 >
问题:

具有默认对象数组的AVRO模式

郦何平
2023-03-14

我有一个带有数组字段的AVRO模式。此数组字段包含作为另一个AVRO架构对象的项目。下面是我现在的代码。

{
  "name": "bars",
  "type": ["null", {
    "type": "array",
    "items": "com.example.Bar"
  }],
  "default": null
}

此代码是“bars”的字段定义,它是一个包含“com.example.Bar”对象的数组。

我现在将默认设置为“null”,但是我想明确将默认值设置为3 Bar对象的数组

假设我的酒吧有以下字段定义:

{
  "name": "name",
  "type": [
    "null",
    "string"
  ],
  "default": null
},
{
  "name": "number",
  "type": [
    "null",
    "int"
  ],
  "default": null
}

我想将“条”默认设置为

{
  "name": "bars",
  "type": ["null", {
    "type": "array",
    "items": "com.example.Bar"
  }],
  "default": [{"name": "bar1", "number":1}, {"name": "bar2", "number":2}, {"name": "bar3", "number":3}]
}

但是此代码不起作用。我应该如何设置对象的默认值?

共有2个答案

国晟睿
2023-03-14

问题是我允许“null”作为数组字段的类型。我想如果我想用值预填充默认字段,我不能允许空值。

因此,以下代码修复了该问题。

{
  "name": "bars",
  "type": {
    "type": "array",
    "items": "com.example.Bar"
  },
  "default": [{"name": "bar1", "number":1}, {"name": "bar2", "number":2}, {"name": "bar3", "number":3}]
}
徐奇
2023-03-14

联合字段的默认值对应于联合中的第一个架构。如果默认值为数组,则数组架构应为联合中的第一个架构。

"type": [
  {
    "type": "array",
    "items": "com.example.Bar"
  },
  "null"
],
 类似资料:
  • 所以我有一个这样的avro记录(称之为v1): 我想添加一个区分大小写的字段,默认值为false(称为v2)。我的第一种方法是: 根据模式演变,这是向后和向前兼容的,因为具有新模式的读取器读取用旧写入器模式编码的记录将能够填充此字段默认值和具有旧模式的读取器将能够读取用新写入器模式编码的记录,因为它只会忽略新添加的字段。 添加此字段的另一种方法是添加默认值为null的

  • 是否允许在友元声明中为模板参数提供默认值? Visual Studio 2015似乎允许这样做。gcc拒绝了。我在cppreference页面上找不到任何内容。

  • 我想知道下面的模式对于Avro模式是否有效。请注意,字段数组的第一个对象中缺少名称。 它实际上是针对以下类型的数据设计的 根据下面的阅读,似乎没有名字的数组是不允许的 Avro架构失败 https://avro.apache.org/docs/current/spec.html#schema_complex 我怀疑下面是正确的 它应该有如下数据,以便成功进行avro转换 下面的模式是否有效?在第一

  • 我试图理解下面的代码片段 当使用指针类型示例int*调用时,默认参数是如何工作的? 当obj1.test()被调用时,编译器将生成什么。我得到一个编译器错误当我尝试

  • 问题内容: Javascript中是否有Python的defaultdict的等效项?这将是一个Javascript数组,其中可为缺少的键返回的值是可定义的。就像是: 如果没有,您将如何实施? 问题答案: 不,这在JavaScript中是不可能的。顺便说一句,您当然是指 对象 (属性值映射)而不是数组。两种解决方案: 将您的对象实现为,旨在完全实现您想要的功能。但是,它只是一个草稿,目前仅在Fir

  • 这适用于顶级对象,但不适用于嵌套对象。例如,如果嵌套对象是特殊对象,则仍将其反序列化为公共对象。 我想做的是告诉Jackson:“无论嵌套级别如何,如果ObjType=Special,使用SpecialObject,否则使用GeneralObject”。我研究了多态反序列化,并尝试使用@JSONSubtypes,但无法正确设置该逻辑。如何确保特殊对象被反序列化到适当的类中,即使它们是嵌套的?