Scala:导入的 scala 对象,其隐式无法提供读取或写入格式(播放 json)



我有一些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]

最新更新