给出的JSON值:你怎么在多个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
和 “FirstNames” 列表会返回:
List("Bob", "Robby")
Howev呃,即使有两个不同的事件发生,“(name)”字段上的(“\\”)递归查找也不会起作用。使用(“\”)将只返回第一次出现我需要一个“名称”列表。
如何在不同的对象中返回多个顶级“名称”值?
'.validate [列表[JsObject]。图(_。flatMap {OBJ =>(OBJ \\“姓).asOpt [字符串]})'或'而验证[列表[T]] ''T'是具有name属性(或Value类)的case类 – cchantep
@cchantep感谢您领导正确的方向,但是我需要“name”字段而不是FirstName字段,并且使用validate将只返回一个JsResult并需要一个匹配的情况下,只返回JsResult。你提供的代码没有编译。我已经解决了这个问题,我会在这个评论后提交一个帖子的答案,但谢谢你。 – ZDevelop94