在 Scala 中使用案例类创建层次结构
Posted
技术标签:
【中文标题】在 Scala 中使用案例类创建层次结构【英文标题】:Making a hierarchy with case classes in Scala 【发布时间】:2016-07-13 13:42:45 【问题描述】:我有两种类型的文档:PDFDocument 和 XMLDocument。两者都是案例类(我需要匹配它们)。 现在,我需要收集文档。因此,我创建了 PrivateDocument 来创建层次结构。 这些文件是我从对外部服务器的请求中获取的,所以我想验证该请求的响应:
response.json.validate[List[ProformaDocument]]
问题是,如果 PrivateDocument 是一个 case 类,那么 case-to-case 继承是被禁止的。 如果 PrivateDocument 是一个特征或一个类,那么我无法反序列化 JSON,因为该特征没有读取。
在所有这些之后,我需要将列表返回到询问它的网页。因此,我需要再次将 List 转换为 Json 数组。
在这种情况下,我可以做些什么来建立正确的层次结构并管理案例类/Json 转换?
【问题讨论】:
【参考方案1】:你仍然可以在普通类上进行匹配。
虽然case-to-case继承不起作用,但您可以创建一个普通的抽象基类并让case类从它继承。
【讨论】:
是一样的。这就是发生的事情:没有找到类型 List[model.PrivateDocument] 的 Json 反序列化器。尝试为此类型实现隐式读取或格式。 那就换个方式试试吧。不要使用案例类。 Case 类提供了自动创建的构造函数、equals 和 hash 的好处,但有时我们负担不起。以上是关于在 Scala 中使用案例类创建层次结构的主要内容,如果未能解决你的问题,请参考以下文章