我有一些scala代码需要使用implicits来序列化和反序列化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中的隐式定义的正确方法是什么?
答案 0 :(得分:0)
问题在于隐式值没有类型注释 -
而不是:
implicit val some1format = Json.format[SomeItem1]
我需要提出:
implicit val some1format: Format[SomeItem1] = Json.format[SomeItem1]