我正在尝试使用 scala json 库 Circe,将其包装在一个简单的特征中以提供与 json 的转换,我有以下内容:
import io.circe.generic.auto._
import io.circe.parser._
import io.circe.syntax._
trait JsonConverter {
def toJson[T](t : T) : String
def fromJson[T](s: String) : T
}
case class CirceJsonConverter() extends JsonConverter{
override def toJson[T](t: T): String = t.asJson.noSpaces
override def fromJson[T](s: String): T = decode[T](s).getOrElse(null).asInstanceOf[T]
}
这样做的目的是简单地能够使用任何对象调用 JsonConverter 并将其转换为/从 json 转换jsonConverter.toJson(0) must equalTo("0")
,但是当我尝试编译它时,我得到以下信息:
[error] could not find implicit value for parameter encoder: io.circe.Encoder[T]
[error] override def toJson[T](t: T): String = t.asJson.noSpaces
[error] ^
[error] could not find implicit value for parameter decoder: io.circe.Decoder[T]
[error] override def fromJson[T](s: String): T = decode[T](s).getOrElse(null).asInstanceOf[T]
[error] ^
[error] two errors found
我当然可以拥有一个我打算通过转换器继承的所有内容的类,但我的印象是 circe 可以自动生成编码器/解码器?