给出JSON值:
val json = Json.parse(
"""
|[{
| "name" : "Agency Co",
| "worker" :{
| "FirstName" : "Bob",
| "age" : 44,
| "role" : null
| }
| },
| {
| "name" : "Agency Inc",
| "worker" :{
| "FirstName" : "Robby",
| "age" : 23,
| "role" : null
| }
| }]
""")
当你这样做时:
(json \\ "FirstName").map(_.asOpt[String].getOrElse("Cannot find field")).toList
和#34; FirstNames"将被退回:
List("Bob", "Robby")
但是," name"上的(" \\")递归查找都找不到任何内容。即使有两种不同的字段,字段也不会起作用。使用(" \")只会返回第一次出现我需要一个"名称"的列表。
如何返回多个顶级"名称"不同对象中的值?
答案 0 :(得分:0)
val listOfObjects: List[JsObject] = json.asOpt[List[JsObject]] match {
case Some(x) => x
case _ => List.empty[JsObject]
}
listOfObjects.map(releaseObject => (releaseObject \ "name")
.asOpt[String].getOrElse("Cannot find field"))
}