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

AVRO Schema可选值验证失败:字符串值无法通过校验

AVRO Schema 校验失败原因及解决办法

问题核心在于AVRO联合类型的JSON编码规则:

你定义的appId字段是["null", "string"]的联合类型,AVRO对这种类型的JSON数据有明确要求:

  • 当值为null时,可直接写null(这就是第一份数据能通过校验的原因)
  • 当值为非null的类型(比如字符串)时,必须用类型名称作为键的对象包裹对应的值

你提供的第二份数据直接将字符串赋值给appId,不符合AVRO的JSON编码规范,因此校验失败。

正确的可校验通过数据示例

{
  "eventName": "active-app-selected",
  "eventData": {
    "appId": {
      "string": "any string"
    }
  }
}

额外优化方案

如果希望避免这种包装式写法,你可以修改Schema,去掉联合类型,直接将appId的类型设为string并指定default: null——AVRO允许基础类型设置默认null值,这样就可以直接写字符串或null:

{
  "type": "record",
  "name": "SelectActiveApp",
  "fields": [
    {
      "name": "eventName",
      "type": "string"
    },
    {
      "name": "eventData",
      "type": {
        "type": "record",
        "name": "EventData",
        "fields": [
          {
            "name": "appId",
            "type": "string",
            "default": null
          }
        ]
      }
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:59