我正在使用一个案例类,它在其他参数中是用 BigInt 十六进制值实例化的。我使用这个案例类通过 Jerkson/Jackson 反序列化 JSON 消息。使用 Jackson 的美妙之处在于,反序列化可以根据案例类的签名(我猜)开箱即用。
现在,一个十六进制编码的 BigInt 值需要用一个额外的基数参数来实例化:BigInt(hexValue, 16)。但是我的 JSON 消息不包含这样的参数。我正在寻找一种解决方案来在我的案例类的定义中定义这个基数,以便杰克逊能够继续使用该类而无需配置。就像是:
case class MyClass(name: String, hexValue: BigInt(hexValue, 16))
我知道替代方法是 a) 明确定义 JSON 反序列化或 b) 围绕 BigInt 定义我自己的包装类。但是,我正在寻找一个更优雅和“scala-ish”的解决方案——如果有的话。
注意:Int 是不够的,它必须是 BigInt。