[英]How to Decode a Generic Case Class with semiautomatic in Circe in Scala 3
以下代码适用于Scala 2.13 (请参阅https://stackoverflow.com/a/59996748/2750966 ):
import io.circe.generic.semiauto._
case class Name(name: String)
case class QueryResult[T: Decoder](data: T)
implicit val nameDer = deriveDecoder[Name]
implicit def result[T: Decoder] = deriveDecoder[QueryResult[T]]
在Scala 3中,我得到以下编译异常:
no implicit argument of type deriving.Mirror.Of[RestEndpoint.this.QueryResult[T]] was found for parameter A of method deriveDecoder in package camundala.bpmn
implicit def result[T: Decoder]: Decoder[QueryResult[T]] = deriveDecoder[QueryResult[T]]
这还不支持还是有什么改变?
看起来 Scala 3 无法为具有多个参数列表的案例类生成Mirror
。 我不知道这是否是记录在案的限制。
由于Decoder
上的上下文绑定,您的案例类QueryResult
有一个辅助参数列表。 你确定你真的需要那个上下文绑定吗? 理想情况下QueryResult
不应该存储任何解码器,甚至根本不关心解码器。
以下作品:
import io.circe._
import io.circe.generic.semiauto._
case class Name(name: String)
case class QueryResult[T](data: T)
implicit val nameDer: Decoder[Name] =
deriveDecoder[Name]
implicit def result[T: Decoder]: Decoder[QueryResult[T]] =
deriveDecoder[QueryResult[T]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.