Как выбрать несколько полей из фреймворка Json Play? - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь получить доступ к данным из REST-API и проанализировать ответ (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

Я использовал \, чтобы получить время, но он возвращает список буферов.

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

Может ли кто-нибудь помочь, как я могу выделить несколько полей в одну строку.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Попробуйте:

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

Метод .as преобразует json в список, а метод .map применяет замену каждого объекта на кортеж.

0 голосов
/ 24 апреля 2018
val parsedJson = json.validate[Seq[JsValue]].get
 parsedJson.map(x => x.\("times") +","+x.\("service")).foreach(println)

Используется Проверить и повторить oved через функцию карты.

...