代码之家  ›  专栏  ›  技术社区  ›  vikash

如何使用case类的任何as参数类型将scala case类编码为json?

  •  0
  • vikash  · 技术社区  · 7 年前

    case class Intro(name : String, quality : Any)
    

    我正在使用scala circe 用于将此对象编码为Json的库。 我使用的代码是

    import io.circe._
    import io.circe.generic.auto._
    import io.circe.syntax._
    
    object Example extends App{
          println(Intro("Vikash","something").asJson)    
    }
    

    编译过程中出现以下错误。

     could not find implicit value for parameter encoder: io.circe.Encoder[com.xxx.Intro]
    

    quality String 那么它工作得很好。

    如何使用 Any

    1 回复  |  直到 7 年前
        1
  •  1
  •   L.Lampart    7 年前

    您的问题与以下事实有关:您使用的是自动编解码器生成,这完全是编译时的,因此给定类型Any的值,几乎不可能为其生成编解码器。您应该能够通过以下方式之一解决此问题:

    1. case class Intro[T](name: String, quality: T) . 这样可以使用Intro[String]、Intro[Int]等。

    如果你不知道什么类型的类或者隐式解析是如何工作的,你应该先了解它们。