Java 类型的Scala隐式转换器不可见
我正在尝试在scala中为jackson mapper实现隐式转换器 代码如下所示:Java 类型的Scala隐式转换器不可见,java,scala,Java,Scala,我正在尝试在scala中为jackson mapper实现隐式转换器 代码如下所示: object JacksonSerializer { implicit val mapper = new ObjectMapper() with ScalaObjectMapper mapper.registerModule(DefaultScalaModule) implicit class JacksonDeSerializer(val body: AnyContent) exten
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)
您没有导入映射器,因此请尝试更改为导入JacksonSerializer。