使用Swagger-annotation将复杂属性表示为String

时间:2016-10-28 23:24:49

标签: java spring rest swagger

在Java / Spring ReST应用程序中,我使用了swagger-annotations 1.3.7我有许多小类(例如,GenderCode),我在我的ReST模型中用作属性。这些类有一个公共属性,称为 value 。使用Jackson,我的API可以接受一个简单的String s 并构造一个例如GenderCode的实例,其设置为 s 。同样,它可以将GenderCode序列化为一个简单的String(当然它代表 value 的值)。

我希望我的Swagger文档将这些对象表示为简单字符串,因为它代表了JSON的外观。相反,它代表一个带有“值”键的复杂类型:

{
  "genderCode": {
    "value": ""
  },
  ...
}

应该看起来像这样:

{
  "genderCode": "",
  ...
}

以下是Java模型的样子:

public class Person {

    @JsonProperty("genderCode")
    @Valid
    @KnownEnumValue
    @ApiModelProperty(value = "GenderCode", dataType="string", required = false,
            allowableValues=GenderCode.POSSIBLE_VALUES_DISPLAY)
    private GenderCode genderCode;

    ...

}

以下是Swagger生成的API定义文件中该属性的定义:

"genderCode":{"enum":["ANY","M","F"],"description":"GenderCode","required":false,"type":"GenderCode"}

我尝试过使用OverrideConverter,但这没有效果。有关如何做到这一点的任何想法?

0 个答案:

没有答案