播放Json Reads和String

elm*_*lto 6 json scala playframework playframework-2.0 playframework-json

我在Play 2.3中有以下JSON阅读器:

import play.api.libs.json._
import play.api.libs.json.Reads._
val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength(3))
Run Code Online (Sandbox Code Playgroud)

并且编译器给了我错误

diverging implicit expansion for type play.api.libs.json.Reads[M]
starting with method ArrayReads in trait DefaultReads
Run Code Online (Sandbox Code Playgroud)

如果我使用implicit val我得到的

 ambiguous implicit values:
 both value uuidReads in trait DefaultReads of type => play.api.libs.json.Reads[java.util.UUID]
 and value airportSearchReads in object AirportSearch of type => play.api.libs.json.Reads[String]
 match expected type play.api.libs.json.Reads[M]
Run Code Online (Sandbox Code Playgroud)

我如何让它工作?

acj*_*jay 6

我得到一个不同的错误,但如果我添加一个显式类型参数,它对我来说很好minLength:

scala> val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength[String](3))
airportSearchReads: play.api.libs.json.Reads[String] = play.api.libs.json.Reads$$anon$8@3fee86da
Run Code Online (Sandbox Code Playgroud)

我认为将其留给编译器的问题在于,在范围内存在不同的implicits组合,以满足隐式参数列表minLength.