我正在尝试实现一个通用模式,使用 Argonaut 为 Akka HTTP REST 服务生成编组器和解组器,同时处理实体和集合级别的请求和响应。我在实施实体级别时没有问题:
case class Foo(foo: String)
object Foo {
implicit val FooJsonCodec = CodecJson.derive[Foo]
implicit val EntityEncodeJson = FooJson.Encoder
implicit val EntityDecodeJson = FooJson.Decoder
}
我在尝试为以下内容提供编码器和解码器时遇到问题:
[
{ "foo": "1" },
{ "foo": "2" }
]
我尝试将以下内容添加到我的同伴中:
object Foo {
implicit val FooCollectionJsonCodec = CodecJson.derive[HashSet[Foo]]
}
但是,我收到以下错误:
Error:(33, 90) value jencode0L is not a member of object argonaut.EncodeJson
我看到这种方法确实不存在,但是否有任何其他通用方法可以生成我的预期结果。我强烈避免使用额外的案例类来描述集合,因为我在我的用例中大量使用反射。
在这一点上,我什至可以使用手动构建的编码器和解码器,但是,我没有找到关于如何使用预期结构构建它的文档。