David
David

Reputation: 45

Scala - Playframework - JsResultException

I am trying to pass json values to my method with a POST but i'm getting the error below:

Handler.scala:320) [play_2.11-2.3.10.jar:2.3.10]
        at scala.Option.map(Option.scala:146) [scala-library-2.11.11.jar:na]
Caused by: play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsarray,WrappedArray())))))
        at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[play-json_2.11-2.3.10.jar:2.3.10]
        at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67) ~[play-json_2.11-2.3.10.jar:2.3.10]
        at play.api.libs.json.JsResult$class.fold(JsResult.scala:77) ~[play-json_2.11-2.3.10.jar:2.3.10]
        at play.api.libs.json.JsError.fold(JsResult.scala:13) ~[play-json_2.11-2.3.10.jar:2.3.10]
        at play.api.libs.json.JsValue$class.as(JsValue.scala:65) ~[play-json_2.11-2.3.10.jar:2.3.10]

and this happens on this variable declaration

  val friends = (json \ "friends ").as[JsArray].value 

I'm able to successfully create a post using Postman without any issue when I format my json as follow

{"success":true,"friends":[ 
    { 
       "id":1,
       "name":"john",
       "age":"19",
    }
]
}

but when i reformat my json to

[ 
    { 
       "id":1,
       "name":"johny",
    }

]

I get

[JsResultException: JsResultException(errors:List((,List(ValidationError(error.expected.jsarray,WrappedArray())))))]

Upvotes: 0

Views: 117

Answers (1)

cchantep
cchantep

Reputation: 9158

  1. .as is unsafe.
  2. There is no friends field in [ { "id":1, "name":"johny", }] (being a JsArray or whatever JsValue).

Upvotes: 2

Related Questions