使用地图填写案例类

时间:2015-08-28 19:46:33

标签: scala design-patterns reflection scala-2.11

一般问题:我有一个数据结构的JSON表示(从现在开始将表示为Map [String,Any])和一个(case)类,其中一些(!)的键值对为字段,但不是全部。我想用默认值填充它们,其中地图没有对(例如,为了简单起见,使用基于构造函数的默认值)。

这将允许类似:

case class User(id : Int, name : String, vegan : Boolean = false)
val map = Map("id" -> 42, "name" -> "tom")
val user = map.as[User] //User {42, "tom", false}

手动编码很容易,但需要时间并且使代码更大/更难维护/检查(特别是每个类> 20个字段)。

我觉得这需要通过反射来实现,更具体地说是在编译时,没有任何性能损害或字节码表示的问题。

我知道有许多问题(和答案)与映射到案例类的映射有关,但大多数使用弃用的apis,而且现有技术也可能已经取得进展。

0 个答案:

没有答案