сериализация рекурсивных типов данных с использованием спрей json в scala - PullRequest
0 голосов
/ 30 января 2020

У меня есть черта 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

, и я также добавил неявную запись для списка. Все, что я забываю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...