我的json结构看起来像这样:
{
"persons": [
{
"name": "Tims",
"surname": "YourAunty"
},
{
"name": "Bobs",
"surname": "YourUncle"
}
]
}
我想应用变压器使其看起来像这样
{
"persons": [
{
"name": "Tims"
},
{
"name": "Bobs"
}
]
}
到目前为止,我所做的是一个变换器,用于删除姓氏,如果它不是一个数组,它就有效:
(__ \ 'persons \ 'surname).json.prune
如何更改此代码以将修剪应用于数组中的每个条目?
答案 0 :(得分:1)
您可以尝试使用此方法,使用案例类从json中获取必需的字段,然后根据需要创建一个json。
val data = Json.parse("""{
"persons": [
{
"name": "Tims",
"surname": "YourAunty"
}, {
"name": "Bobs",
"surname": "YourUncle"
}
]
}""")
case class Persons(name: String)
implicit val format = Json.format[Persons]
Json.toJson(Map("persons" -> (data \ "persons").asOpt[List[Persons]]))
编辑:
可能有点脏,但试试这个:
var jsonData: List[JsValue] = (data \ "persons").asOpt[List[JsValue]].fold(List.empty[JsValue])(identity)
Json.toJson(Map("persons" -> jsonData.map(_.as[Map[String, String]]).map(_ - "surname")))// whatever you want to delete from map just type it here.