Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类型的Scala隐式转换器不可见_Java_Scala - Fatal编程技术网

Java 类型的Scala隐式转换器不可见

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

我正在尝试在scala中为jackson mapper实现隐式转换器

代码如下所示:

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。