Eu quero definir estrutura referenciada circular JSON com spray-json, então eu tento definir como abaixo.
final case class A(b: B)
final case class B(a: A)
trait AProtocol extends DefaultJsonProtocol {
implicit val aProtocol: RootJsonFormat[A] = rootFormat(lazyFormat(jsonFormat1(A)))
}
Mas eu tenho um erro que é
<console>:18: error: could not find implicit value for evidence parameter of type MyProtocol.this.JF[B]
implicit val aProtocol: RootJsonFormat[A] = rootFormat(lazyFormat(jsonFormat1(A)))
Por favor me dê alguns conselhos.
Respostas:
0 para resposta № 1Bem, você tem jsonFormat para A mas com B. Você está usando lazyFormat bem, mas esqueceu completamente de outras dependências. Tente isto:
final case class A(b: B)
final case class B(a: A)
trait AProtocol extends DefaultJsonProtocol {
implicit val aProtocol: RootJsonFormat[A] = rootFormat(lazyFormat(jsonFormat1(A)))
implicit val bProtocol: RootJsonFormat[B] = rootFormat(lazyFormat(jsonFormat1(B)))
}