【问题标题】:Play Framework Json Object mapping partial objectsPlay Framework Json Object 映射部分对象
【发布时间】:2023-04-06 06:59:02
【问题描述】:

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

谢谢

汤姆

【问题讨论】:

    标签: json scala playframework playframework-2.0


    【解决方案1】:

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

    【讨论】:

    • 效果很好,非常感谢。当您有认识 scala 的人向您指出显而易见的事情时,这会变得非常明显:)
    • 学习所有新的或不同的 scala 概念需要一些时间。随着每一天,世界变得更加明亮;D
    猜你喜欢
    • 1970-01-01
    • 2019-05-27
    • 2020-12-27
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2023-03-08
    • 2018-08-18
    • 2012-07-12
    相关资源
    最近更新 更多