КонтекстСкала PlayJson Циклическая ссылка
У меня есть случай класс, который является элемент в иерархии, которая относится к себе как так:
case class Node(
name: String,
children: Option[Seq[Node]] = None
)
Я хотел бы PlayJson Format
для этого.
Как правило, вы можете просто сделать:
implicit lazy val formatter = Json.format[MyCaseClass]
Но это не работает.
Почему?
PlayJson использует макрос Scala для создания Format
для класса случае, она будет проходить через все поля, когда он попадет в поле children
он будет искать существующий форматировщик для Node
, которые оно еще не построенным, заканчиваясь с ошибкой компиляции:
No implicit format for Option[Seq[Node]] available.
[error] implicit lazy val formatter = Json.format[Node]
Вопросы
Какой самый лучший способ приблизиться к этому?
Это известная проблема с макросом формата PlayJson?
Блестящий, спасибо за указатель! –
Проверьте мое редактирование, все это можно немного сократить. –
Кажется, что-то, что должно быть усвоено для макроса. Я еще не играл с моим собственным макросом в Scala; есть ли что-то конкретное в отношении макросов Scala, что означает, что это невозможно? –