我有一些scala代码需要使用隐式来序列化和反序列化json。
我们之前有一些东西可以通过放置这些隐式语句(用傻瓜简化)来工作:
(in some class SomeClass1)
implicit val some1format = Json.format[SomeItem1]
implicit val some2format = Json.format[SomeItem2]
...
全部作为类级变量。然后,类中的任何方法都可以很好地从 Json 转换。
但是,我们试图将这些格式的隐式定义移动到一个单独的对象中。
因此,我们创建了一个对象(例如:SomeFormatters),它只包含以下隐式内容:
object SomeFormatters {
implicit val some1format = Json.format[SomeItem1]
implicit val some2format = Json.format[SomeItem2]
}
当我尝试将此对象导入 SomeClass1 时,我收到一个编译错误,指出找不到 SomeItem1 或 SomeItem2 的反序列化程序,即使我正在导入 SomeFormatters。(IDE说SomeFormatters的导入未使用,所以我已经知道有些东西不对劲了。
让 SomeClass1 了解 SomeFormatters 中的隐式定义的正确方法是什么?
问题是隐式值没有类型注释 -
而不是:
implicit val some1format = Json.format[SomeItem1]
我需要放:
implicit val some1format: Format[SomeItem1] = Json.format[SomeItem1]