在游戏中找到 Json 的隐式值

Finding the implicit value for Json in play

当我使用以下代码时:

import JsonImpl.graphFormat
val js = Json.toJson(g)(graphFormat)

我的代码编译并运行良好,但是当我这样做时它不起作用并显示:"No Json serializer found for type SGraph. Try to implement an implicit Writes or Format for this type."

import JsonImpl.graphFormat
val js = Json.toJson(g)

JsonImpl 是:

object JsonImpl{
    implicit val graphFormat = Json.format[SGraph]
}

我不想为我的 SGraph class 使用伴随对象。问题是什么,为什么找不到隐含值?

为了完整起见:Json.format 是一个宏,在处理宏时,最好确保返回的内容是适当的静态类型:

object JsonImpl{
  implicit val graphFormat: Format[SGraph] = Json.format[SGraph]
}

事实上,无论何时处理隐式值,这都是一个好主意,它会避免很多混乱(有时是因为您做错了什么,有时是因为编译器错了)。