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

Avro Reflect嵌套Map属性为null时序列化失败问题求助

解决Avro Reflect处理Nullable嵌套Map空值时的序列化/反序列化错误

问题根源

你当前的@AvroSchema注解仅将字段类型定义为map类型,但字段标记了@Nullable允许为null。Avro要求字段的Schema必须显式包含null作为联合类型选项,否则反射库在处理null值时,会默认认为字段必须是map实例,进而尝试调用map.size()导致空指针错误。

解决方案

修改@AvroSchema的定义,将顶层类型设置为包含null和目标map的联合类型:

class Test {
 @Nullable
 @AvroSchema("[\"null\", {\"type\":\"map\",\"values\":[\"null\", {\"type\":\"map\",\"values\":[\"null\", \"string\"]}]}]")
 java.util.Map<String, java.util.Map<Locale, String>> test;

 // 其他代码
}

说明

  • Avro的联合类型需要用数组格式声明,["null", ...]表示字段值可以是null,也可以是后续定义的类型。
  • 你原来的Schema只定义了map类型,没有包含null选项,和@Nullable的语义不匹配,这是导致错误的核心原因。
  • 修改后,当test为null时,Avro反射会正确识别并处理这个空值,不会再触发空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:42:39