使用 as 从 JsLookupResult 到 List[Map[String, JsValue]] 的隐式转换错误

Implicit conversion using as from JsLookupResult to List[Map[String, JsValue]] error

我有这个 scala 代码,它解析 json 并从 jsonValue 获取 notifiers 对象。

object App {
  def main(args: Array[String]) {
    val json = 
      """{
         "notifiers":[
            {
               "type":"url",
               "attributes":{
                  "msg":"Hello world!"
               }
            }
         ],
         "filters":[],
         "position":{}
      }"""
    val jsonValue: JsValue = Json.parse(json)
    (jsonValue \ "notifiers").as[List[Map[String, JsValue]]]
  }
}

为什么我在最后一行收到这个错误?

Multiple markers at this line: - Line breakpoint:App [line: 25] - App - Implicit conversion found: jsonValue ⇒ jsValueToJsLookup(jsonValue): play.api.libs.json.JsLookup - bad symbolic reference. A signature in DefaultReads.class refers to term time in package java which is not available. It may be completely missing from the current classpath, or the version on the classpath might be incompatible with the version used when compiling DefaultReads.class.

使用 Scala 2.10.6,这个项目是一个具有 com.typesafe.play 依赖性的 Maven 模块

<dependency>
    <groupId>com.typesafe.play</groupId>
    <artifactId>play-json_2.10</artifactId>
    <version>2.4.6</version>
</dependency>

Ps。我在其他一些程序中做了同样的事情,我正在使用这个 .as (def as[T](implicit fjs: Reads[T]): T) 从 JsLookupResult 类型转换为 List[Map[String, JsValue]] 没有错误。

尝试使用 JDK 8 或更早版本的 Play。 Play 2.4 仅支持 JDK 8 (https://www.playframework.com/documentation/2.4.x/Migration24) - 您得到的错误是关于无法在包 java 中找到成员 time,自 JDK 8.