Play Framework Json Object映射部分对象

时间:2013-04-18 11:20:30

标签: json scala playframework playframework-2.0

另一个Play Framework 2.1问题,因为文档对我来说太过技术了。

如果我有一个表示某事物的scala case类对象,比如服务器:

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模型,我可以将一些值映射到我的类字段,而将其他值保留为默认值吗?

由于

汤姆

1 个答案:

答案 0 :(得分:1)

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