У меня есть проект в акке и цирце. В настоящее время я отправляю этот json в теле ответа:
{ "a": 33, "things": [{ "id1": ["2"], "id2": [], "id4": [], "id5": [] } ] }
Я пытаюсь извлечь его из этого класса:
case class Body(things: Option[List[Things]])
case class Things(id1: Option[List[String]] = None, id2: Option[List[String]] = None, id3: Option[List[String]] = None, id4:Option[List[String]] = None)
Я делаю это, используя этот код:
entity(as[Body]).as(Body.getIds)
Этот код опирается на приведенный ниже объект-компаньон
object Body extends ErrorAccumulatingCirceSupport {
def getIds(body: Body): List[String] =
body.things.get.flatMap(_.id4.getOrElse(List()))
}
Однако, если я фактически не передам значение в объектах в массиве вещей (например, "id2": ["33"])
Он никогда не заканчивает демаршаллинг JSON. Благодарен за любой совет!