【发布时间】:2016-04-15 22:51:44
【问题描述】:
我有一个嵌套对象,例如:
{
"name:"ABC",
"nest1":{
{
"field1": null,
"field2": null,
"field3": [],
"field4": {},
},
"nest2":{
"field1":"123",
"field2":null
}
}
我想清理这个 json,并确保输出是:
{
"name:"ABC",
"nest2":{
"field1":"123"
}
}
我写了以下代码:
def withoutNullAndEmptyObj(json: JsValue): JsValue = {
json match {
case JsObject(fields) =>
if (fields.isEmpty) JsNull
else{
fields.foldLeft(new JsObject(Map()))((agg, field) =>
field match{
case (_, JsNull) => agg
case other@(name, value: JsArray) => if (value == emptyArray) agg else agg+other
case (name, value: JsObject) => if (value == emptyObject) agg else agg+(name, withoutNullAndEmptyObj(value))
case other@(name, value) => agg+other
}
)
}
case other => other
}
}
问题是它不能完全工作。 它将产生以下json:
{
"name:"ABC",
"nest1":{},
"nest2":{
"field1":"123"
}
}
这还不够好。
【问题讨论】:
-
创建一个新对象,只复制你想要的内容?
标签: json scala playframework playframework-2.0