【发布时间】:2017-06-02 01:21:58
【问题描述】:
我喜欢为我的案例类使用casecodecN 或无形解码器,但是当它是 json 时,其中一个字段具有不同的类型。
考虑一下,其中 json 中的 b 是一个类似 "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)
)
这对于短案例类来说是可以的,但对于大类来说就很乏味了。
有没有一种方法我可以使用派生的解码器但只更改一个值类型?
谢谢
【问题讨论】: