You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JSON Avro Schema中创建枚举类型数组?

解决Avro Schema中枚举数组字段的定义问题

我来帮你搞定这个问题!你已经正确定义了枚举类型,问题出在数组字段引用枚举的语法上——你之前的写法不符合Avro Schema的规范,所以无法生效。

错误原因分析

你尝试的"items": { "extensions" }是无效的Avro语法:Avro中引用已定义的类型需要直接使用字符串形式的类型名称,而不是这种对象写法。

两种可行的解决方案

方案1:将枚举定义在Schema的types数组中并引用

如果希望枚举可以被多个字段复用,推荐把枚举放在Schema的types数组里,然后在数组字段的items中直接引用枚举名称:

{
  "type": "record",
  "name": "data",
  "fields": [
    {
      "name": "validExtensions",
      "type": {
        "type": "array",
        "items": "extensions"
      }
    },
    {
      "name": "fileName",
      "type": "string"
    }
  ],
  "types": [
    {
      "type": "enum",
      "name": "extensions",
      "symbols": [".zip", ".txt", ".csv", ".pdf", ".xls", ".xlsx"]
    }
  ]
}

方案2:内联枚举定义

如果这个枚举只给validExtensions字段使用,也可以直接把枚举定义写在items中:

{
  "type": "record",
  "name": "data",
  "fields": [
    {
      "name": "validExtensions",
      "type": {
        "type": "array",
        "items": {
          "type": "enum",
          "name": "extensions",
          "symbols": [".zip", ".txt", ".csv", ".pdf", ".xls", ".xlsx"]
        }
      }
    },
    {
      "name": "fileName",
      "type": "string"
    }
  ]
}

验证效果

以上两种Schema都能完美支持你期望的JSON输出:

{
  "data": {
    "validExtensions": [".csv", ".xls"],
    "fileName": "testing.csv"
  }
}

内容的提问来源于stack exchange,提问作者staten12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:12:29