簡體   English   中英

Scala隱式轉換器對於類型不可見

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM