2016-01-26 37 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”或“有些是空的清单,你可以看到有很多不同之处。 –

回答