有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Swaggerannotation将复杂属性表示为字符串

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

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

{
  "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) 个答案