Вот решение, если вы можете настроить Классы дел :
import play.api.libs.json._
case class EmailStats(id: Int, providerId: String, stats: Option[String] = None)
object EmailStats {
implicit def format: OFormat[EmailStats] = Json.using[Json.WithDefaultValues].format[EmailStats]
}
case class Email(id: Int = 0, createdAt: Option[String], updatedAt: Option[String], emailStats: Seq[EmailStats]) {
}
object Email {
implicit def format: OFormat[Email] = Json.using[Json.WithDefaultValues].format[Email]
}
Настроить конструкторы (добавлено emailStats
).
Добавьте средства форматирования в Сопутствующие объекты .
Вот пример:
val jsonStr = """{"id": 0, "createdAt": "01/08/2020 00:00:12","updatedAt": "01/09/2020 01:56:05", "emailStats": [{"id": 3, "providerId": "provider" }]}
|""".stripMargin
Json.parse(jsonStr).validate[Email] // -> JsSuccess(Email(0,Some(01/08/2020 00:00:12),Some(01/09/2020 01:56:05),List(EmailStats(3,provider,None))),)
Дайте мне знать если вам нужно больше объяснений.
Помните, что я изменил некоторые свойства на CamelCase
, чтобы упростить пример.