使用"com.typesafe.play" %% "play-json" % "2.4.0-M3"
val json=Json.parse("""[1,"second",3]""")
case class C123(arg1: Int, arg2: String, arg3: Int)
implicit val c123Reads: Reads[C123] = (
JsPath(1).read[Int] and
JsPath(2).read[String] and
JsPath(3).read[Int]
)(C123)
println(json.as[C123]) //fail
我无法弄清楚为什么会失败,这样做的正确方法是什么?
这是错误日志,适用于任何有能力理解的人。
线程“main”中的异常play.api.libs.json.JsResultException: JsResultException(错误:清单(((2),表(ValidationError(error.expected.jsstring,WrappedArray()))) ((1),表(ValidationError(error.expected.jsnumber,WrappedArray()))), ((3),表(ValidationError(error.expected.jsnumber,WrappedArray())))))
可悲的是,Play-Json中没有默认的Tuple
读者。
答案 0 :(得分:1)
列表索引必须从0开始,而不是从1开始。
implicit val c123Reads: Reads[C123] = (
JsPath(0).read[Int] and
JsPath(1).read[String] and
JsPath(2).read[Int]
)(C123)
scala> println(json.as[C123])
C123(1,second,3)