【发布时间】:2018-04-08 04:38:15
【问题描述】:
是否可以从circe 而不是 JSON 中获取底层 hlist 表示?本质上将案例类转换为 HList
注意:我知道这可以直接使用 shapeless 实现,我想尝试基于 circe's 宏的解析器,因为我遇到了 shapeless 的性能问题。
【问题讨论】:
是否可以从circe 而不是 JSON 中获取底层 hlist 表示?本质上将案例类转换为 HList
注意:我知道这可以直接使用 shapeless 实现,我想尝试基于 circe's 宏的解析器,因为我遇到了 shapeless 的性能问题。
【问题讨论】:
您为什么认为有任何“来自circe 的基础 hlist 表示”?
circe 所做的是将parsing 和String 引入JSON,引入类型类Decoder 和Encoder
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 不会将 case 类转换为 HList,shapeless 会。
【讨论】: