Przykłady tego rodzaju komunikatów produkowanych przez Play JSON API:coraz lepiej komunikaty błędów z gry JSON API
scala> import play.api.libs.json._
import play.api.libs.json._
scala> Json.obj("k" -> Json.obj("m" -> 7))
res0: play.api.libs.json.JsObject = {"k":{"m":7}}
scala> (res0 \ "p").as[String]
play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(validate.error.expected.jsstring,WrappedArray())))))
at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
at play.api.libs.json.JsResult$class.fold(JsResult.scala:69)
at play.api.libs.json.JsError.fold(JsResult.scala:10)
at play.api.libs.json.JsValue$class.as(JsValue.scala:65)
at play.api.libs.json.JsUndefined.as(JsValue.scala:98)
at .<init>(<console>:12)
at .<clinit>(<console>)
at .<init>(<console>:7)
// gazillion lines more
scala> (res0 \ "k" \ "m").as[String]
play.api.libs.json.JsResultException: JsResultException(errors:List((,List(ValidationError(validate.error.expected.jsstring,WrappedArray())))))
at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
at play.api.libs.json.JsValue$$anonfun$2.apply(JsValue.scala:67)
at play.api.libs.json.JsResult$class.fold(JsResult.scala:69)
at play.api.libs.json.JsError.fold(JsResult.scala:10)
at play.api.libs.json.JsValue$class.as(JsValue.scala:65)
at play.api.libs.json.JsNumber.as(JsValue.scala:108)
at .<init>(<console>:12)
at .<clinit>(<console>)
at .<init>(<console>:7)
// gazillion lines more
Czy istnieje sposób, aby uzyskać lepsze komunikaty o błędach z tym API? Na przykład, komunikaty o błędach dla dwóch powyższych przypadkach mogłaby wyglądać No value found at JsPath \ "p"
, Value found at JsPath \ "k" \ "m" cannot be read as type String
itp
Dlaczego nie jest domyślny sposób działania domyślnych metod dostępu w 'JsValue'? Błąd zgłaszania spraw. :( – missingfaktor
@mandubian - Mam typ Long w jednej z właściwości klasy scala case, ale kiedy konwertuję json na seq tej klasy, to daje mi "erro.expected.long" –
Jeśli nawet powiedział, w której linii błąd zdarza się, że nie byłoby * tak * strasznie. – JulienD