播放框架Json对象映射部分对象

播放框架Json对象映射部分对象,json,scala,playframework,playframework-2.0,Json,Scala,Playframework,Playframework 2.0,另一个PlayFramework2.1的问题,因为文档太过技术化,我无法理解 如果我有一个scala case类对象表示某个对象,比如说服务器: case class Server(name: String, ip: String, operatingsystem: enums.OperatingSystem) implicit val serverreads = ((__ \ "name").read[String] and (__ \ "ip").read[String] and (__

另一个PlayFramework2.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,现在我知道我可以将其更改为选项[String]并映射None,因此这不是一个完美的示例,但是如果我想简化Json模型而不更改基础case类,我可以将一些值映射到我的类字段,而将其他值保留为默认值吗

谢谢


Tom

您可以简单地创建一个自定义应用方法,即
simplaApply
。 您还可以创建一个与json结构匹配的对象
SimpleServer

使用案例类时,您可以使用默认数据定义实例,并在使用新数据覆盖的同时复制实例,即
i.copy(prop1=42)

您只需创建一个自定义应用方法,即
simplaApply
。 您还可以创建一个与json结构匹配的对象
SimpleServer

使用案例类时,您可以使用默认数据定义实例,并在使用新数据覆盖的同时复制实例,即
i.copy(prop1=42)

很好用,非常感谢。当你有一个熟悉scala的人向你指出显而易见的事情时,你会惊讶地发现:)你需要一段时间才能了解scala的所有新的或不同的概念。世界每天都变得更加光明;工作得很好,非常感谢。当你有一个熟悉scala的人向你指出显而易见的事情时,你会惊讶地发现:)你需要一段时间才能了解scala的所有新的或不同的概念。世界每天都变得更加光明;D