У меня есть черта TreeNode, которая по своей природе рекурсивна.
trait TreeNode {
def id: String
def name: String
def nodeType: String
def children: mutable.MutableList[TreeNode]
def parent: TreeNode
def addNode(childNode: TreeNode): Unit
def getChildrenOf(node: TreeNode) = node.children
}
Я использую spray- json для сериализации, где мой неявный писатель сериализатора
object MyJsonProtocol extends DefaultJsonProtocol {
implicit val treeJsonWriter = new JsonWriter[TreeNode] {
override def write(c: TreeNode): JsValue = {
val children = c.children.toList.toJson.asJsObject
val fields = children.fields + (
"id" -> c.id.toJson,
"name" -> c.name.toJson,
"nodeType" -> c.nodeType.toJson
)
JsObject(fields.toSeq: _*)
}
}
}
Я получаю ошибку компиляции
Ошибка: (31, 40) Не удается найти класс типа JsonWriter или JsonFormat для List [TreeNode] val children = c .children.toList.to Json .asJsObject
, и я также добавил неявную запись для списка. Все, что я забываю