2016-01-26 72 views
1

我有兩個班,和他們每個人包含其他:Play2斯卡拉 - JSON格式與循環依賴

import play.api.libs.json.Json 

case class Param(name: String, 
       data: ParamData) 
case class ParamData(`type`: String, 
        value: String, 
        options: Option[List[Param]]) 

implicit val paramDataJsonFormat = Json.format[ParamData] 
implicit val paramJsonFormat = Json.format[Param] 

當我定義了JSON格式我得到一個編譯錯誤:

Error:(110, 51) No implicit format for List[Param]] available.

implicit val paramJsonFormat = Json.format[Param]

如果我改變暗示的順序,我會在另一行發現相同的錯誤:

Error:(110, 51) No implicit format for List[ParamData]] available.

implicit val paramDataJsonFormat = Json.format[ParamData]

我該如何解決這個問題?

+1

你將如何實例化這些類之一?我看到的唯一方法是在兩個參數之一中添加一個「null」,或者在「ParamData」中添加一個空列表。 –

+0

@EndeNeu你說得對。 「ParamData」的「選項」成員是可選的。我將編輯該問題。謝謝 – tano

+1

雖然這並不改變我暗示的內容,但通常當我最終得到循環引用時,這是因爲我的設計中存在缺陷,即使使用選項,您仍然可以使用「None」或「有些是空的清單,你可以看到有很多不同之處。 –

回答