鉴于argonaut
文档中的以下内容:
import argonaut._
import Argonaut._
case class Person(name: String, age: Int)
implicit def PersonDecodeJson: DecodeJson[Person] =
jdecode2L(Person.apply)("name", "age")
scala> Json.obj("name" -> jString("bob"),
"age" -> jString("whoops - not a number.")
).as[Person]
res1: argonaut.DecodeResult[Person] = DecodeResult(Left((Int,CursorHistory(List(El(CursorOpDownField(age),true))))))
scala> Json.obj("name" -> jNumber(42),
"age" -> jString("whoops - not a number.")
).as[Person]
res2: argonaut.DecodeResult[Person] = DecodeResult(Left((String,CursorHistory(List(El(CursorOpDownField(name),true))))))
在res2
中,似乎age
' 的类型不正确,即预期的数字,但得到了字符串,没有出现在光标输出中。换句话说,在我看来,解码很快就失败了name
。
是否有“开箱即用”DecodeJson
可以返回所有失败的解码尝试?