gpt4 book ai didi

json - 具有默认参数的通用案例类的 Circe 编码器

转载 作者:行者123 更新时间:2023-12-01 15:32:39 26 4
gpt4 key购买 nike

我希望为以下案例类提供 JSON 编码器:

import io.circe.generic.extras.Configuration

final case class Hello[T](
source: String,
version: Int = 1,
data: T
)

object Hello {
implicit val configuration: Configuration = Configuration.default.withDefaults
}

我通常会调用 deriveEncoder[A]在伴随对象中,但在这里不起作用,因为没有引用或 Encoder对于 T在这里可用。
Hello type 将作为库提供给客户端,所以我想在这种类型中尽可能多地做样板,而不是依赖于提供编码器和解码器的客户端代码。 circe 是否有一个惯用的解决方案,以便客户端为 T 提供编码器/解码器这用于导出 Hello[T] 的编码器/解码器?

最佳答案

是的,您需要添加一个上下文绑定(bind),要求任何类型都存在隐式编码器 T :

import io.circe.gemeric.semiauto._

final case class Hello[T](
source: String,
version: Int = 1,
data: T
)

object Hello {
implicit def helloEncoder[T: Encoder]: Encoder[Hello[T]] = deriveEncoder
}

这样当用户创建自己的 Hello[Foo]输入,他们必须确保 Foo有自己的编码器。

关于json - 具有默认参数的通用案例类的 Circe 编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com