我正在使用Play 2 case class inversion来转换为POSO(普通的旧scala对象)和json字符串。
关于toJson写入转换的,我希望空的POSO vals(字符串和列表)甚至不显示在json字符串中...怎么做?
答案 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 = {}