语境
我有一个案例类,它是层次结构中的一个项目,它像这样引用自身:
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 格式宏的已知问题吗?