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

使用Apache Avro时UUID字段toString输出无引号问题咨询

Avro UUID字段toString输出无引号问题解答

结论

这是Avro 1.11.1及后续版本的已知bug,和你的配置无关。

问题根源

Avro 1.11.1优化了UUID逻辑类型的映射,将原本的String类型改为java.util.UUID类型,但生成的toString()方法处理UUID字段时,直接输出UUID原生的无引号字符串(例如550e8400-e29b-41d4-a716-446655440000),没有像字符串字段那样添加双引号,导致输出的内容不符合JSON格式规范。

可行解决方案

  • 临时降级版本:将Avro Maven插件版本回退到1.11.0,此时UUID字段会被映射为String类型,toString()输出会自动包含引号。
  • 重写toString()方法:手动修改生成的Java类,重写toString()逻辑,给UUID字段添加引号包裹;也可以通过插件自定义模板,让生成的代码自动处理引号。
  • 使用官方JSON序列化工具:不要依赖生成类的toString(),改用Avro提供的JSON序列化API(比如GenericDatumWriter搭配JsonEncoder)生成合法JSON,这是更稳妥的长期方案。

内容的提问来源于stack exchange,提问作者Javier Estévez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:30:37