我有一个与此类似的案例类 found here :
case class WebCategory(topGroupName: String,
topGroupID: String,
webCategoryName : String,
webCategoryID : String,
subWebCats:Seq[SubWebCat])
case class SubWebCat(name:String, id:String)
我的请求正文 json 具有与案例类完全相同的键名。例如:
{
"webCategoryID" : "blah",
"webCategoryName" : "abcabc",
"topGroupID" : "blah",
"topGroupName" : "namehere",
"subWebCats" : [
{
"name" : "blah",
"id" : "idblah"
},
{
"name" : "another blah",
"id" : "another idblah"
}
]
}
案例类和请求正文键相同,那么是否可以直接从请求 json 构建案例类对象?如果可能的话,我该怎么做?任何引用资料都会有所帮助。如果不可能,那么这意味着我必须定义我在 answer 中解释的自定义隐式转换器。我在其中实现它没有任何问题。
注意:我正在使用 Play 2.3 和 Scala 11 进行开发
最佳答案
您可以非常轻松地使用 Play 的内置 JSON 验证。您不需要为此添加任何第三方依赖项。
case class WebCategory(topGroupName: String,
topGroupID: String,
webCategoryName : String,
webCategoryID : String,
subWebCats:Seq[SubWebCat])
object WebCategory {
implicit val fmt = Json.format[WebCategory]
}
case class SubWebCat(name:String, id:String)
object SubWebCat {
implicit val fmt = Json.format[SubWebCat]
}
然后,在您的 Controller 操作中:
def save: Action(parse.json) { implicit request =>
request.body.validate[WebCategory].fold(
errors => BadRequest(errors.mkString),
category => Ok("saved category")
)
}
关于json - 在 play 和 scala 中请求正文到案例类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341616/