播放Json异常的2隐式读取或格式
这是我的Cout对象:播放Json异常的2隐式读取或格式,json,scala,playframework,Json,Scala,Playframework,这是我的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 write
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”)行上。作为[Int],
谁能告诉我我做错了什么
- 从中得到了例子
格式中有一个输入错误
实例:您正在编写一个的“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)
感谢您的回答,但问题仍然存在。问题来自我的json响应。事实上,我得到的是
{“idCout”:“1”,“cout”:“test”}
并且我的类需要一个Int。我将它更改为字符串,它工作正常。但我仍然不知道为什么idCout是字符串而不是Int