这是我的Cout对象:
case class Cout (idCout:Int, cout:String)
object Cout{
implicit object CoutFormat extends Format[Cout] {
def reads(json: JsValue): Cout = Cout(
(json \ "idCout").as[Int],
(json \ "cout").as[String]
)
def writes(s: Cout): JsValue = JsObject(Seq(
"id" -> JsNumber(s.idCout),
"cout" -> JsString(s.cout)
))
}
}
我在使用WS调用Web服务时尝试使用此类:
val cout = response.json.as[Cout]
但scala编译器一直在抱怨:
[RuntimeException: Int expected]
在(json \ "idCout").as[Int],
有人能告诉我我做错了吗?
答案 0 :(得分:1)
您的Format
个实例中有一个拼写错误:您正在撰写"id"
字段,但尝试阅读一个名为"idCout"
的字段。改变其中一个:
case class Cout (idCout: Int, cout: String)
object Cout {
implicit object CoutFormat extends Format[Cout] {
def reads(json: JsValue): Cout = Cout(
(json \ "idCout").as[Int],
(json \ "cout").as[String]
)
def writes(s: Cout): JsValue = JsObject(Seq(
"idCout" -> JsNumber(s.idCout),
"cout" -> JsString(s.cout)
))
}
}
它有效:
scala> Json.toJson(Cout(1, "test")).as[Cout]
res0: Cout = Cout(1,test)