我正在编写一个简单的 JSON 序列化程序,用于java.io.File
简化路径:
import java.io.File
import play.api.libs.json._
import Implicits.File._
object Implicits {
object File {
implicit val format: Format[File] = new Format[File] {
override def writes(o: File): JsValue = JsString(o.toString)
override def reads(js: JsValue): JsResult[File] = js.validate[String].map(f => new File(f))
}
}
}
final case class Bar(path: File)
object Bar {
implicit val format: Format[Bar] = Json.format
}
我发现上述方法不起作用:
No instance of play.api.libs.json.Format is available for java.io.File in the implicit scope
但是,如果我将名称更改为Implicit.File.format
to Implicit.File.fmt
,它就可以正常工作。
为什么在这种情况下,当它应该是隐式作用域解析器应该关心的类型时,名称会发生冲突?Format[File]
我正在使用 play-json 2.6.7。