【发布时间】:2019-03-06 18:12:09
【问题描述】:
我以前使用Circe 进行案例类序列化/反序列化,并且喜欢它如何在没有其他 Scala JSON 库所需的样板代码的情况下使用,但我现在遇到了一个问题,我不确定如何使用解决。我有一个 ADT(一个带有多个案例类实例的密封特征),我想一般处理(来自我的 Akka Http 服务,使用 akka-http-json)(即,返回一个 List[Foo],其中 Foo 是特征-类型),但是当我使用 Circe 的自动推导(通过 Shapeless)这样做时,它使用特定案例类名称作为“鉴别器”序列化实例(例如,如果我的 List[Foo] 包含 Foo1 的实例,那么每个结果序列化列表中的元素将具有键 Foo1)。我想消除类型名称作为鉴别器(即,不是让序列中的每个元素都以类型名称为前缀 - 例如,"Foo1": {"id : "1", name : "First",...},我只想序列化案例类实例以包含字段案例类的:例如,{"id":"1,"name:"First",...}...本质上,我想消除类型名称键(我不希望前端必须知道每个元素在后面属于哪个具体案例类-end)。
要序列化的列表中的所有元素都将具有相同的具体类型,所有这些都将是我的 ADT(特征)类型的子类型。我相信这可以使用 Circe 的 semi -自动派生,虽然我没有机会确切地弄清楚如何。基本上,我想尽可能多地使用 Circe 的自动派生,但消除出现在结果 JSON 中的外部类名。任何非常感谢您的帮助/建议!谢谢!
【问题讨论】:
标签: json scala shapeless circe