我已经编写了这段代码来使用circe读写josn

import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
case class Foo(i: Int)
val f = Foo(10)
val json = f.asJson.toString
val t1 = decode[Foo](json)

这很好。但是如果我创建一个普通的 class 吧
class Bar { var i : Int = 0 }
decode[Bar](json)

现在我得到错误
 could not find implicit value for evidence parameter of type io.circe.Decoder[$sess.cmd25.Bar]

那么可以使用普通类并使用Circe从json解码它们吗?

最佳答案

使用io.circe.generic.auto._,您将使用Circe的自动泛型派生,该派生由Shapeless的LabelledGeneric类型类支持。 LabelledGeneric仅适用于元组和案例类等产品类型。这就是为什么您看到此错误的原因,因为Circe的自动模式无法自动为您的纯​​类派生Decoder实例。您可以手动为类的解码器implement(请参阅自定义编码器/解码器部分)。

09-26 18:21