Например, у нас есть некоторый класс дел
case class Foo(a: Int, b: List[String])
И мы хотим десериализовать экземпляр Foo
из json {"a": 1}
, заменив отсутствующий массив b
на Nil
Мы можем создать собственный декодер для такого поведения
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?