【发布时间】:2019-10-30 02:11:45
【问题描述】:
例如,我们有一些案例类
case class Foo(a: Int, b: List[String])
我们想从 json {"a": 1} 反序列化 Foo 的实例,用 Nil 替换缺少的 b 数组
我们可以为这种行为创建自定义解码器
implicit val fooDecoder: Decoder[Foo] = (c: HCursor) =>
for {
a <- c.downField("a").as[Int]
b <- c.downField("b").as[Option[List[String]]
} yield Foo(a, b.getOrElse(Nil))
但是,不幸的是,以这种方式创建的解码器不会累积所有解码失败。
有什么方法可以创建具有故障累积的解码器或任何方法来替换 circe 中的标准列表反序列化行为?
【问题讨论】: