繁体   English   中英

Play2的Json异常隐式读取或格式化

[英]Play2 implicit Reads or Format for Json exception

这是我的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],

有人可以告诉我我在做什么错吗?

您在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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM