Получить отфильтрованное значение JSON Scala Play - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю с Scala Play и использую WS для получения ответа от URL.

Мой пример JSON:

[
 {
   "object": "001",
   "object-description": "MODEL",
   "criterion": "TW3",
   "criterion-description": "MODELE X07"
 },
{
  "object": "002",
  "object-description": "TYPE",
  "criterion": "STANDA",
  "criterion-description": "STANDARD TYPE"
}, ...

Я хочу получить только поле "критерий", где«объект» равен «002». Итак, в этом примере значение «STANDA».

A Тест:

   ws.url(
    url)
  .get()
  .map { response =>
     Right((response.json \ "object="002"" \\ "criterion").map(_.as[String]))
  }

Как я могу это сделать?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 30 сентября 2019

Вы можете преобразовать весь ответ в классы scala, используя автоматические средства форматирования, а затем работать с ними.

case class Data(`object`: String, criterion: String)
implicit val dataRead = Json.reads[Data]

response.json.as[List[Data]]
  .filter(_.`object` == "002")
  .map(_.criterion)
...