/ / Como definir definição JSON circular referenciada usando spray-json? - scala, spray-json

Como definir definição JSON referenciada circular usando spray-json? - scala, spray-json

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 № 1

Bem, 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)))
}