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

时间:2018-04-24 14:10:31

标签: json scala apache-spark playframework scala-collections

我正在尝试从REST-API访问数据并使用play框架解析响应(json)。以下是我对REST Call的回复。

[
{"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

我用\来获取时间,但它返回List Buffer。

val json = Json.parse(response_from_rest)
println((json \\ "time"))

任何人都可以帮助我如何选择多个字段为单行。

2 个答案:

答案 0 :(得分:1)

尝试:

json.as[List[JsValue]].map(row => 
  (row \ "time").as[LocalDate] -> (row \ "service").as[String]
)
// List[(LocalDate,String)]

.as方法将json转换为列表,.map方法适用用元组替换每个对象。

答案 1 :(得分:0)

val parsedJson = json.validate[Seq[JsValue]].get
 parsedJson.map(x => x.\("times") +","+x.\("service")).foreach(println)

使用Validate并通过map函数迭代oved。