0

我有一些需要使用隐式序列化和反序列化 json 的 scala 代码。

我们以前通过放置这些隐式语句(用假人简化)来实现一些工作:

  (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 中的隐式定义的正确方法是什么?

4

1 回答 1

1

问题是隐式值没有类型注释 -

代替:

implicit val some1format = Json.format[SomeItem1]

我需要说:

implicit val some1format: Format[SomeItem1] = Json.format[SomeItem1]
于 2017-11-08T23:56:26.583 回答