我在将JSON值转换为字符串以外的任何内容时遇到问题。下面的代码给出了如下错误:
JsError(List((/id,List(ValidationError(error.expected.jsnumber,WrappedArray()))))
但是,如果我将ConfigInfo和ConfigInfoReads的构造函数参数的类型更改为String,则一切都按预期工作。 Play文档显示,从JsNumber到Long和JsBoolean到Boolean的转换应该只是默认工作。
// Defined in my controller
implicit val ConfigInfoReads: Reads[ConfigInfo] = (
(JsPath \ "id").read[Long] and
(JsPath \ "newRecord").read[Boolean]
)(ConfigInfo.apply _)
// Defined in my controller
case class ConfigInfo(id: Long, newRecord: Boolean)
// Inside of my controller action
request.body.asJson.map { json =>
val config = json.validate[ConfigInfo]
}
修改
以下是传递JSON的示例:
{"id":"4","newRecord":"false"}