невозможно получить значение от JsSuccess - PullRequest
0 голосов
/ 25 июня 2018

Я получаю java.lang.ClassCastException: scala.Some cannot be cast to models.Data ошибку при попытке получить значение из JsSuccess. В чем ошибка в следующем коде?

val dataOption = request.body.validateOpt[Data]
      dataOption match {
        case dataSuccess:JsSuccess[Data] => {
          println("validated request body:" + dataSuccess) //I see this print
          val data:Data = dataSuccess.value //PROGRAM THROWS EXCEPTION HERE
          println("received data:" + data +", "+data.mydata) 

я получаю следующие данные {"data":{"field1":"d","field2":"d","field3":["d"],"field4":["d"],"field5":[1],"field6":"d","field7":"d"}}

JsValue.validateOpt успешно приводит данные

validated request body:JsSuccess(Some(Data(MyData(None,d,List(d),List(1),d,Set(d),d,d))),/my-data)

Затем, когда я пытаюсь получить данные, программа выдает исключение java.lang.ClassCastException: scala.Some cannot be cast to models.Data

val data:Data = dataSuccess.value //PROGRAM THROWS EXCEPTION HERE
              println("received data:" + data +", "+data.mydata)

Класс модели

case class Data(myData:MyData)

case class MyData (field1: Option[UUID],
                              field2: String,
                              field3: List[String],
                              field4: Seq[Byte],
                              field5: String,
                              field6: Set[String],
                              field7: String,
                              field8:String)

1 Ответ

0 голосов
/ 25 июня 2018

case dataSuccess:JsSuccess[Data] должно быть questionSuccess:JsSuccess[Option[Data]], потому что validateOpt[T] возвращает Option[T]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...