我有一个case类,其中包含另一个case类的List
,如下所示:final case class Nested(p1: String, p2: String)
final case class Outer(str: Option[String], lst: Option[List[Nested]])
我为每个类创建了Encoder
和Decoder
(隐式变量)。
现在,当我试着这么做的时候:val decodedEither = decode[Outer](jsonString)
我得到了这样的错误:
解码失败(类型与预期不匹配:外部,列表())
我的导入:
import io.circe.Decoder.Result
import io.circe._
import io.circe.parser._
import io.circe.syntax._
import cats.syntax.show._
这是一个普通的例子,实际的类名是不同的,我只是在一个更复杂的情况下隔离了一个错误,然后尝试了非常简单的JSON和类(几乎像上面的那些)。
有谁知道缺少了什么,以及如何让circe
使用带有List
(和Set
)字段的case类解析JSON?
2条答案
按热度按时间hc2pp10m1#
我不得不使用
Decoder.forProductN()
方法来创建解码器,而不是使用Decoder.instance()
。我不知道为什么,但它解决了问题,尽管在项目中使用了这两种变体。ijxebb2r2#
可能是您如何定义编解码器或json的问题