我有以下案例类:
case class QueryResult[T: Decoder](data: T)
它与自动派生一起工作。
但是我不能解决它有一个半自动推导。
下面是我的测试用例:
//import io.circe.generic.auto._ // with this it works
import io.circe.derivation._
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]] // this does not work
这给了我:
Error:(16, 50) No method evidence$1 in pme123.graphql.client.QueryResult[T] (this is probably because a constructor parameter isn't a val)
implicit def result[T: Decoder] = deriveDecoder[QueryResult[T]]
2条答案
按热度按时间mrfwxfqh1#
你用的是哪个版本的circe?在0.12.3中,我必须使用
import io.circe.generic.semiauto._
,下面的代码对我有用:niknxzdl2#
遇到了同样的问题。这在关于接受答案的评论中有所解释,但您需要确保在每种类型上添加编码器/解码器。
例如,你遇到了一个问题,不知何故,circe不知道如何解码
A
,确保你有编码器/解码器一直向下: