从Circe获取基础HList

时间:2017-10-26 17:26:01

标签: scala shapeless circe

是否可以从circe而不是JSON获取基础hlist表示?基本上将案例类转换为HList

注意:我知道这可以通过无形直接实现,我想尝试circe's基于宏的解析器,因为我遇到了无形的性能问题。

1 个答案:

答案 0 :(得分:1)

为什么您认为circe"中有任何"基础hlist表示?

circe对JSON parsing String做了什么,介绍了类型类DecoderEncoder

trait Encoder[A] extends Serializable { self =>
  def apply(a: A): Json
//...
}

trait Decoder[A] extends Serializable { self =>
  def apply(c: HCursor): Decoder.Result[A]
//...
}

deriving这些使用shapeless的类型类。例如,这意味着如果我们有Decoder[H]Decoder[T],那么我们就有Decoder[H :: T]。但除Json以外的案例类没有基础circe表示。

circe没有将案例类转换为HListshapeless会这样做。