如何从Json播放框架中选择多个字段?
我试图从REST-API访问数据,并使用play框架解析响应(json)。下面是我对REST通话的回应如何从Json播放框架中选择多个字段?,json,scala,apache-spark,playframework,scala-collections,Json,Scala,Apache Spark,Playframework,Scala Collections,我试图从REST-API访问数据,并使用play框架解析响应(json)。下面是我对REST通话的回应 [ {"time":"2018-01-01","query":"select..","service":"sql"}, {"time":"2018-01-01","query":"select..","service":"sql"}, {"time":"2018-01-01","query":"select..","service":"sql"} ] 我想选择时间、服务并将其列为一行,如下所
[
{"time":"2018-01-01","query":"select..","service":"sql"},
{"time":"2018-01-01","query":"select..","service":"sql"},
{"time":"2018-01-01","query":"select..","service":"sql"}
]
我想选择时间、服务并将其列为一行,如下所示
2018-01-01,sql
2018-01-01,sql
2018-01-01,sql
我用\获取时间,但它返回列表缓冲区
val json = Json.parse(response_from_rest)
println((json \\ "time"))
有谁能帮我把多个字段选成一行吗
val parsedJson = json.validate[Seq[JsValue]].get
parsedJson.map(x => x.\("times") +","+x.\("service")).foreach(println)
使用验证并通过映射函数进行迭代。尝试:
json.as[List[JsValue]].map(row =>
(row \ "time").as[LocalDate] -> (row \ "service").as[String]
)
// List[(LocalDate,String)]
.as
方法将json转换为一个列表,.map
方法将每个对象替换为一个元组。为了改进答案,请添加一些解释,说明它是如何解决问题的。@EricHauenstein哪一部分值得解释?导致您的答案自动标记为低质量的部分。@EricHauenstein是的,这是哪一部分?(我认为答案应该是为了满足人类而不是机器)也许是关于为什么需要.map或=>操作符才能让代码工作的注释,根据这里的指导原则。至于答案是否需要同时满足人类和SO的算法,我假设答案是两者都满足,但这不是我的算法。