我有一个端点,我想允许调用者限制JSON结果中返回的字段数量。
case class User(id: Int, p1: String, p2: String, p3: Int, p4: Boolean, ...)
控制器操作如下:
def index() = Action { implicit request: Request[AnyContent] => val user = userService.get(...) Ok(user) }
所以说端点可以这样调用:
/user/123 /user/123?fields=p1,p3
由于我有一个用户案例类,我如何能够根据调用者想要返回的内容以动态的方式操纵结果集?
只需过滤JSON字段:
case class Lorem(foo: String, bar: Int) implicit val format: OFormat[Lorem] = Json.format val fields = List("foo") Ok(JsObject( Json.toJsObject(Lorem("str", 2)).value.filterKeys(fields.contains))) //{"foo":"str"}