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

在Google Cloud Pub/Sub的Avro Schema中定义可空列表遇异常

Google Cloud Pub/Sub Avro Schema验证异常问题解答

问题原因

你的问题出在Avro JSON编码的联合类型处理规则上:

  • 当字段类型是包含null的联合类型(比如你的["null", "array"])时,对于非null的复杂类型值(数组、自定义record这类),Avro要求必须用带类型标识的对象结构包裹,不能直接传原始数组值。
  • 而null值不需要额外包装,直接传null就能通过验证,这就是为什么你的null测试消息能正常通过。

修正后的非空列表测试消息

把数组值包装成带type和value的结构即可通过验证:

{
  "nullable_list": {
    "type": "array",
    "value": [
      {"field1": 10, "field2": "example1"},
      {"field1": 20, "field2": "example2"}
    ]
  }
}

补充说明

Google Cloud Pub/Sub的Avro schema验证严格遵循Avro官方JSON编码规范:

  • 若联合类型包含基本类型(比如["null", "int"]),可以直接传递原始值(如123),无需包装;
  • 但涉及复杂类型(数组、自定义record、map等)时,必须显式指定类型,用{"type": "类型名", "value": 实际值}的结构传递,否则会被判定为不符合schema规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:32:36