【发布时间】:2014-05-14 19:04:25
【问题描述】:
不确定这是否可能,但我有一个类似于以下简化版本的模型案例类
案例类 MyEntity(userName: String, firstName:String,lastName:String)
我有相应的读写 JSON 组合器。
当前端发送请求时,“用户名”永远不会传递到传入的 JSON 中,但这是将模型保存到数据库中的强制属性。从 requestHeader 等中获取“用户名”是服务器的责任。服务器有该信息。由于 userName 并不是一个真正的可选字段(并且不是客户端在每个 JSON 请求中填充它的责任)我在想是否有办法在传入的 JSON 进入读取组合器(并得到验证)之前修改它,所以模型 MyEntity 是完整的并且符合读取验证条件。
传入的 JSON
{
"firstName" : "MyFirstName",
"lastName" : "MyLastName"
}
希望从客户那里收到后看起来像下面这样。
{
"userName" : "kerberosId",
"firstName" : "MyFirstName",
"lastName" : "MyLastName"
}
可能是某种装饰器模式。有没有一种优雅的方法来处理这个?我了解 JSON 请求的模型类应该只具有支持/验证传入请求的结构,但不希望有另一个案例类,其中包含数据库保存所需的所有信息。
【问题讨论】:
-
不是很优雅的解决方案,但你可以这样做
(request.body.as[JsObject] ++ Json.obj("userName" -> "kerberosId")).validate[User]。
标签: scala playframework