如何在 Avro 中序列化 java.math.BigDecimal?

问题描述 投票:0回答:3

Avro 架构是使用 JSON 定义的。模式由基本类型(null、boolean、int、long、float、double、bytes 和 string)和复杂类型(record、enum、array、map、union 和fixed)组成。我想问一下 BigDecimal 适合哪个。

java bigdecimal avro
3个回答
10
投票

Avro 在 1.7.7 中引入了逻辑类型(我相信),这应该可以帮助您序列化十进制。

https://avro.apache.org/docs/1.8.1/spec.html#Decimal


1
投票

这是代码:

"type": [ {
    "type": "string",
    "java-class": "java.math.BigDecimal"
 } ]

0
投票

要在 Avro 中序列化 Java BigDecimal,您可以定义使用“十进制”逻辑类型的 Avro 模式。 “decimal”逻辑类型允许您指定 BigDecimal 的精度和小数位数。以下是小数点后 2 位 BigDecimal 的示例模式定义:

{
  "name": "amount",
  "type": {
    "type": "bytes",
    "logicalType": "decimal",
    "precision": 10,   // Adjust precision as needed
    "scale": 2        // Adjust scale as needed
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.