玩2 json压制空元素

时间:2014-02-09 19:54:13

标签: scala playframework-2.0

我正在使用Play 2 case class inversion来转换为POSO(普通的旧scala对象)和json字符串。

关于toJson写入转换的

,我希望空的POSO vals(字符串和列表)甚至不显示在json字符串中...怎么做?

1 个答案:

答案 0 :(得分:2)

您可以非常轻松地添加隐式函数omitEmpty

implicit class RichJsObject(original: JsObject) {
  def omitEmpty: JsObject = original.value.foldLeft(original) { 
    case (obj, (key, JsString(st))) if st.isEmpty => obj - key
    case (obj, (key, JsArray(arr))) if arr.isEmpty => obj - key
    case (obj, (_, _)) => obj
  }
}

然后,您可以在omitEmpty上致电JsObject

scala> Json.obj("x" -> "", "y" -> JsArray()).omitEmpty
res5: play.api.libs.json.JsObject = {}