Scala Play: Как отобразить JSON структуру массива в Case Class - PullRequest
0 голосов
/ 28 января 2020

Я совершенно новичок в Scala и Play, и наткнулся на следующую проблему:

Учитывая следующую структуру JSON:

[
  {
    "name": "Adam",
    "age": 19
  },
  {
    "name": "Berta",
    "age": 22
  },
...
]

Я хотел бы сопоставьте это JSON с классами наблюдений, такими как:

case class User(name: String, age: Int)
case class Users(users: Seq[User])

или хотя бы с чем-то вроде Seq[User].

Я не знаю, как пройти через JsPath, потому что нет ключ.

Я пытался определить неявное чтение, но либо он не может разрешить символ "чтение", либо он не может найти неявное для пользователя.

object User {
  implicit val reads: Reads[User] = Json.reads[User]
}
object Users {
  implicit val usersReads: Reads[Users] = (
    (JsPath).read[Seq[User]]
  )(Users.apply _)
}

Как мне сопоставить мой JSON к рабочей модели?

1 Ответ

2 голосов
/ 28 января 2020

Примерно так будет работать

import play.api.libs.json._

case class User(name: String, age: Int)
case class Users(users: Seq[User])

object User {
  implicit val reads = Json.reads[User]
}

object Users {
  implicit val reads: Reads[Users] = Reads {
      _.validate[Seq[User]].map(Users(_))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...