繁体   English   中英

如何在 Scala 3 中的 Circe 中使用半自动解码通用案例类

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM