JsonValidationError не является интерпретацией ошибки объекта - PullRequest
0 голосов
/ 05 марта 2020

Кто-нибудь знает, что может быть причиной этой ошибки?

Future(
  Success(
    JsError(
      List(
        (,List(
            JsonValidationError(
              List(
                [{"FIELD1":"field1value","FIELD2":"field2value","FIELD3":"field3value"}] is not an object
              ),
              ArraySeq())
))))))

Спасибо!

ОБНОВЛЕНИЕ Код, сгенерировавший этот вывод, выглядит следующим образом :

val queryResponse: Future[JsResult[MyObject]] = ws.url(queryURL)
    .withCookies(cookies.toSeq :_*)
    .get().map{response =>
    (response.json \ "object").validate[MyObject]
  }

Ответ от сервера выглядит как список JSON объектов.

Структура MyObject выглядит следующим образом:

case class MyObject(
                    FIELD1: Int,
                    FIELD2: Int,
                    FIELD3: String,
                    FIELD4: String,
                    FIELD5: String,
                    FIELD6: Int,
                    FIELD7: String,
                    FIELD8: String,
                    FIELD9: Option[String],
                    FIELD10: String,
                    FIELD11: String,
                    FIELD12: String,
                    FIELD13: Int
                  )

object MyObject
{

  implicit val format: Format[MyObject] = Json.format

  implicit val myObjectWrites = Json.writes[MyObject]

  implicit val myObjectReads: Reads[MyObject] = (
    (JsPath \ "FIELD1").read[Int] and
      (JsPath \ "FIELD2").read[Int] and
      (JsPath \ "FIELD3").read[String] and
      (JsPath \ "FIELD4").read[String] and
      (JsPath \ "FIELD5").read[String] and
      (JsPath \ "FIELD6").read[Int] and
      (JsPath \ "FIELD7").read[String] and
      (JsPath \ "FIELD8").read[String] and
      (JsPath \ "FIELD9").readNullable[String] and
      (JsPath \ "FIELD10").read[String] and
      (JsPath \ "FIELD11").read[String] and
      (JsPath \ "FIELD12").read[String] and
      (JsPath \ "FIELD13").read[Int])(MyObject.apply _)

}

1 Ответ

0 голосов
/ 05 марта 2020

Вы пытались проанализировать объект из JSON документа, который выглядел следующим образом:

{
  "object": [
    { "FIELD1":"field1value","FIELD2":"field2value","FIELD3":"field3value"}
  ]
}

Вместо этого используйте

(response.json \ "object" \ 0).validate[MyObject]

или

(response.json \ "object").validate[Seq[MyObject]]

Вот пример кода ie для иллюстрации: https://scastie.scala-lang.org/avdv/gNc2SFkIR2ukvDtr7ZiYJw

...