2017-10-05 2 views
1

Je veux définir la structure circulaire référencée JSON avec spray-json, donc j'essaie de définir comme ci-dessous.Comment définir une définition JSON référencée circulaire en utilisant spray-json?

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 je suis 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 me donner quelques conseils.

Répondre

0

Eh bien, vous avez jsonFormat pour A mais avec B. Vous utilisez bien lazyFormat mais complètement oublié d'autres dépendances. Essayez ceci:

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

J'ai essayé comme vous l'avez dit et cela fonctionne bien. Merci pour votre conseil. – mtwtkman