我想为我的案例类使用casecodecN
or shapeless 解码器,但是当它是 json 时,其中一个字段具有不同的类型。
考虑一下,b
在 json 中是一个类似的字符串"1.23"
,但我希望它是一个 Double。
case class Foo(a: Double, b: Double)
如果我使用 casecodec2 它会出错,因为它b
是一个字符串
casecodec2(Foo.apply, Foo.unapply)("a", "b")
所以我必须手动写DecodeJson
DecodeJson[Foo](
c =>
for {
a <- (c --\ "a").as[Double]
b <- (c --\ "b").as[String].map(_.toDouble)
} yield Foo(a, b)
)
这对于短案例类来说是可以的,但对于大类来说就很乏味了。
有没有办法使用派生的解码器但只更改一个值类型?
谢谢