2017-10-05 64 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