簡體   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