Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Json播放框架中选择多个字段?_Json_Scala_Apache Spark_Playframework_Scala Collections - Fatal编程技术网

如何从Json播放框架中选择多个字段?

如何从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"} ] 我想选择时间、服务并将其列为一行,如下所

我试图从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"}
]
我想选择时间、服务并将其列为一行,如下所示

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的算法,我假设答案是两者都满足,但这不是我的算法。