例:取得より良いエラーメッセージプレイ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
は、このAPIのうち、優れたエラーメッセージを取得する方法はありますか?例えば、2例上記のエラーメッセージがJsValue.as[T]
を使用してValue found at JsPath \ "k" \ "m" cannot be read as type String
など
はなぜJsValue' 'のデフォルトのアクセサメソッドがどのように動作するか、デフォルトの方法ではありません)。
は楽しいことがありますか?エラー報告の問題。 :( – missingfaktor
@マンダビアン - 私はスカラケースクラスのプロパティの1つにロングタイプを持っていますが、私はそのクラスのseqにjsonを変換するときに "erro.expected.long"を与えます –
もしそれがエラーそれは恐ろしいことではないでしょう。 – JulienD