【问题标题】:Scala: Imported scala object with implicits not working for providing Read or Write format (play json)Scala:导入的 scala 对象,隐含不能提供读取或写入格式(播放 json)
【发布时间】:2017-11-09 07:56:26
【问题描述】:

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

【问题讨论】:

    标签: json scala play-json


    【解决方案1】:

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

    代替:

    implicit val some1format = Json.format[SomeItem1]
    

    我需要说:

    implicit val some1format: Format[SomeItem1] = Json.format[SomeItem1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2013-01-11
      • 2021-10-26
      • 2017-04-13
      • 2018-08-05
      相关资源
      最近更新 更多