大多数流行的 Scala JSON 库都能够序列化和反序列化为案例类。
不幸的是,在 Scala 2.11 发布之前,案例类可以拥有的参数数量是有限制的(最多 22 个)。作为超过此限制的解决方法,可以使用常规类。 (例如:如何使用 *non-case* 类通过 Scala 从 JSON 反序列化?).
然而,这失去了案例类的好处。例如,没有自动生成的复制构造函数,并且镜头不能与常规类一起使用,因此操作结构变得非常麻烦(除非将类中的每个字段都设置为var
,放弃不变性的好处)。
有没有一种方法可以使常规类的行为更像案例类,以便镜头也可以对它们起作用?
如果您无论如何都使用镜头,只需嵌套您的案例类即可。您将有更多的数据重用潜力,不嵌套的主要原因是为了避免像这样的怪物
record.copy(person = record.person.copy(name = record.person.name.capitalize))
如果使用镜头,这些问题(很大程度上)就可以解决。 JSON 可以处理嵌套类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)