在游戏中找到Json的隐含值

时间:2015-06-14 02:45:57

标签: scala playframework implicit-conversion

当我使用以下代码时:

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

我的代码编译并且工作正常,但是当我这样做时它不起作用并且说:"没有找到类型为SGraph的Json序列化器。尝试为此类型实现隐式写入或格式。"

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

JsonImpl是:

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

我不想在我的SGraph课程中使用伴侣对象。问题是什么以及为什么找不到隐含的值?

1 个答案:

答案 0 :(得分:4)

为了完整起见:Json.format是一个宏,当你处理宏时,最好确保你得到的东西是适当的静态类型:

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

事实上,无论何时处理隐式值,这都是一个好主意,它会给你带来很多困惑(有时因为你做错了什么,有时因为编译器有错误)。