У меня есть два класса, и каждый из них содержит другой:PLAY2 Scala - формат 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]
Как это решить?
Как вы собираетесь создать экземпляр одного из этих классов? Единственный способ, который я вижу, - добавить «null» в один из двух или пустой список в «ParamData». –
@EndeNeu Вы правы. Элемент 'options'' ParamData' является необязательным. Я отредактирую вопрос. Спасибо – tano
Это не меняет то, что я намекал, хотя, как правило, когда я заканчиваю циклическими ссылками, это потому, что в моем дизайне есть недостаток, в вашем случае, даже если вы используете опции, вы все равно можете иметь «Нет» или 'Some' с пустым списком, так как вы можете видеть, что есть большая разница. –