2014-02-24 33 views
6

我能夠設置揚鞭播放,並嘗試揚鞭-UI的模型/方案......我必須說,這真是太棒了。如何控制揚鞭方式產生一類

記錄我的控制器與ApiOperation,ApiImplicitPara等的操作很容易,它按預期工作。

不過,由於我對Swagger的瞭解有限,因此在爲body類型的隱式參數定義模式時遇到了一個問題。我要地圖的隱含參數的類看起來是這樣的:

@ApiModel(value "User", description = "Represents an user") 
class User private(private var json: JsValue) { 

    private def setValue(key: JsPath, value: JsValue) = { 
    value match { 
     case JsNull => json.transform(key.json.prune).map(t => json = t) 
     case _ => json.transform((__.json.update(key.json.put(value)))).map(t => json = t) 
    } 
    } 

    def asJson = json 

    @ApiModelProperty(value = "User's id", dataType = "String", required = false) 
    def id_= (v: Option[String]) = setValue((__ \ 'id), Json.toJson(v)) 
    def id = json as (__ \ 'id).readNullable[String] 
    @ApiModelProperty(value = "User's email address", dataType = "String", required = true) 
    def email = json as (__ \ 'email).read[String] 
    def email_= (v: String) = setValue((__ \ 'email), Json.toJson(v)) 
    @ApiModelProperty(value = "User's firstName", dataType = "String", required = true) 
    def firstName = json as (__ \ 'firstName).read[String] 
    def firatName_= (v: String) = setValue((__ \ 'firstName), Json.toJson(v)) 
    ... 
} 

object User { 

    def apply(
    id: Option[String], 
    email: String, 
    firstName: String, 
): JsResult[User] = apply(Json.obj(
    "id" -> id, 
    "email" -> email, 
    "firstName" -> firstName, 
    ... 
)) 
} 

我的模型類的內部表示是JSON ...然後我只需要提供getter和setter讀取/修改內部JSON –這解決方案讓我能夠非常快速地處理JSON,並且可以將該對象原樣傳遞給MongoDB。

的問題是,揚鞭上面的類生成的模式是這樣的:

User { 
    json(JsValue), 
    id(String): User's id, 
    email(String): User's email, 
    firstName(String): User's first name, 
    ... 
} 

如何防止揚鞭自投入json模型?

回答

1

試試這個:

@ApiModelProperty(required = false, hidden = true) 
def asJson = json