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