1

另一个 Play Framework 2.1 问题,因为文档太技术化,我无法理解。

如果我有一个代表某些东西的 scala 案例类对象,比如说一个服务器:

case class Server(name: String, ip: String, operatingsystem: enums.OperatingSystem)

implicit val serverreads = ((__ \ "name").read[String] and (__ \ "ip").read[String] and (__ \ "os").read[enums.OperatingSystem])(Server.apply _)

implicit val serverwrite = ((__ \ "name").write[String] and (__ \ "ip").write[String] and (__ \ "os").write[enums.OperatingSystem])(unlift(Server.unapply))

我为它创建了我的 Json 读取和写入,我可以处理整个对象,这很好。

但是可以映射部分对象吗?

例如,如果我有一个不活动的服务器,它可能没有 IP,现在我知道我可以将其更改为 Option[String] 并映射 None,所以这不是一个完美的例子,但如果我想要为了在不更改底层案例类的情况下简化我的 Json 模型,我可以将一些值映射到我的类字段,同时将其他值保留为默认值吗?

谢谢

汤姆

4

1 回答 1

1

您可以简单地创建一个自定义应用方法,即simplaApply. 您也可以创建一个SimpleServer与您的 json 结构匹配的对象。使用案例类时,您可以使用默认数据定义一个实例,并在用新数据覆盖时复制该实例,即i.copy(prop1=42).

于 2013-04-18T13:57:23.480 回答