Scala 播放2 json抑制空元素

Scala 播放2 json抑制空元素,scala,playframework-2.0,Scala,Playframework 2.0,我使用Play 2 case类inception来转换POSO(普通的老scala对象)和json字符串 在toJson写转换中,我希望空的POSO VAL(字符串和列表)不会出现在json字符串中。。。怎么做?您可以很容易地添加一个隐式函数省略empty implicit class RichJsObject(original: JsObject) { def omitEmpty: JsObject = original.value.foldLeft(original) { ca

我使用Play 2 case类inception来转换POSO(普通的老scala对象)和json字符串


在toJson写转换中,我希望空的POSO VAL(字符串和列表)不会出现在json字符串中。。。怎么做?

您可以很容易地添加一个隐式函数
省略empty

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
  }
}
然后可以对
JsObject
调用
ommitempty

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

嘿,当我隐式创建一个JsObject时,这很好用。。。但不确定如何通过Json.toJson(POSO)通过inception使用它。在JsValue上定义它,并使用模式匹配来避免转换非JsObject JsValue实例。