ContextScala PlayJson Cyclic Referenz
ich einen Fall Klasse haben, die ein Element in einer Hierarchie, die wie so auf sich selbst verweist:
case class Node(
name: String,
children: Option[Seq[Node]] = None
)
ich einen PlayJson Format
dafür möchte.
Normalerweise können Sie einfach tun:
implicit lazy val formatter = Json.format[MyCaseClass]
Aber das funktioniert nicht.
Warum?
PlayJson verwendet eine Scala Makro eine Format
für den Fall Klasse zu produzieren, sie durch alle Felder gehen, wenn es um das Feld children
wird es für einen vorhandenen Formatierer für Node
aussehen wird, die es noch nicht gebaut wurde, endet mit einem Übersetzungsfehler:
No implicit format for Option[Seq[Node]] available.
[error] implicit lazy val formatter = Json.format[Node]
Fragen
Was ist der beste Weg, um diesen Ansatz?
Ist dies ein bekanntes Problem mit PlayJson-Format Makro?
Brilliant, danke für den Zeiger! –
Check out my edit, das Ganze könnte ein wenig verkürzt werden. –
Scheint wie etwas, das in das Makro internalisiert werden sollte. Ich habe noch nicht mit meinem eigenen Makro in Scala gespielt; Gibt es etwas Spezifisches über Scala-Makros, was bedeutet, dass dies nicht möglich ist? –