/ / Comment définir une définition JSON référencée de manière circulaire en utilisant spray-json? - scala, spray-json

Comment définir une définition JSON référencée circulaire en utilisant spray-json? - scala, spray-json

Je veux définir la structure référencée circulaire JSON avec spray-json, alors j'essaie de définir comme ci-dessous.

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

Mais j'ai une erreur qui est

<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)))

S'il vous plaît donnez-moi des conseils.

Réponses:

0 pour la réponse № 1

Eh bien, vous avez jsonFormat pour A mais avec B. Vous utilisez bien lazyFormat mais vous avez complètement oublié les autres dépendances. Essaye ça:

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