【问题标题】:Null values in JsObject for Option using play framework 2.1使用播放框架 2.1 的 JsObject 中的空值选项
【发布时间】:2013-09-10 17:22:05
【问题描述】:

我有一个带有一些选项的案例类:

case class Person (
  name: String, 
  nationality: Option[String], 
  email: Option[String], 
  gender: Option[String]
)

使用 play 2.1.3 我正在尝试创建一个如下所示的 JSON:

{"name": "Joe", "email": "john@doe.com"}

对于一个对象:

val user = new User("Joe, None, Some("john@doe.com"), Some("male"))

与:

val myJson = Json.obj("name" -> user.name, 
    "nationality" -> user.nationality, "email" -> user.email)

然而我得到:

{"name": "Joe", "nationality": null, "email": "john@doe.com"}

如何避免JSON中带有null值的国籍?

【问题讨论】:

    标签: json scala playframework-2.1


    【解决方案1】:

    在意识到问题与播放 JSON 处理有关后,我设法找到了受I need advice on Play's Json and elegant Option handling in the Writes trait 启发的解决方案。我不相信这是目前最优雅的解决方案,但它确实有效:

    def writes(person: Person): JsValue = {
      JsObject(
        Seq[(String, JsValue)]() ++
        Some(person.name).map("name" -> JsString(_)) ++
        person.email.map("email" -> JsString(_))
      )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-29
      • 2012-07-23
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多