[英]Scala implicit converter is not visible for type
我正在嘗試在scala中為傑克遜映射器實現隱式轉換器,
代碼如下所示:
object JacksonSerializer {
implicit val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
implicit class JacksonDeSerializer(val body: AnyContent) extends AnyVal {
def as[T](implicit manifest: Manifest[T]): T = {
mapper.readValue(body.asText.get, manifest.runtimeClass.asInstanceOf[Class[T]])
}
}
implicit class JacksonSerializer(val any: Any) {
def toJsonString: String = {
val out = new StringWriter
mapper.writeValue(out, any)
out.toString()
}
}
}
但是當我嘗試以下操作時:
import JacksonSerializer.JacksonSerializer
Ok("{}".toJsonString)
我收到編譯錯誤:
value toJsonString is not a member of String Ok("{}".toJsonString)
嘗試了幾乎所有我能想到的事情,但仍未取得任何進展。
您必須以不同於其內部隱式類的方式調用封閉對象:
object JacksonSerializerHelpers {
implicit val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
implicit class JacksonSerializer(val any: Any) {
def toJsonString(implicit mapper: ObjectMapper): String = {
val out = new StringWriter
mapper.writeValue(out, any)
out.toString()
}
}
}
import JacksonSerializerHelper.JacksonSerializer
Ok("{}".toJsonString)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.