2017-10-05 65 views
1

我想用spray-json定义循环引用的结构JSON,所以我尝试像下面那样定义。如何使用spray-json定义循环引用的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))) 
} 

但我得到了一个错误,是

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

请给我一些建议。

回答

0

那么,你有A的jsonFormat但B的是什么。你很好地使用lazyFormat,但完全忘记了其他依赖。试试这个:

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

我试着像你说的那样,它工作正常。感谢您的意见。 – mtwtkman