在我的Spring Boot应用程序中,我有一个DTO对象,其中包含DTO对象的嵌套列表。
类:

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "contact")
public class ContactDTO {
  @ApiModelProperty(value = "id", example = "1", hidden = true)
  private Long id;

  @ApiModelProperty(value = "first name", example = "John")
  private String firstName;

  @ApiModelProperty(value = "last name", example = "Doe")
  private String lastName;

  @Builder.Default
  @ApiModelProperty(value = "list of phone numbers", name = "phonenumbers")
  List<PhoneNumberDTO> phoneNumberDTOList = new ArrayList<>();
}


张贴请求的招摇示例值:

{
  "firstName": "John",
  "lastName": "Doe",
  "phoneNumberDTOList": [
    {
      "label": "Company",
      "number": "put number here"
    }
  ]
}



我以为name = ...中的@ApiModelProperty属性会覆盖变量名称phoneNumberDTOList,但这不起作用:(

我使用springfox-swagger 2.9.2

  implementation 'io.springfox:springfox-swagger2:2.9.2'
  implementation 'io.springfox:springfox-swagger-ui:2.9.2'



我究竟做错了什么?

最佳答案

请检查以下问题:

@ApiModelProperty "name" attribute has no effect



  我们不希望序列化模型与所记录的模型不同。


  实际上,@ApiModelProperty的存在是由我们想要使用swagger-core使用的相同批注这一事实来解释的。但是,我们采用仅使用注释来补充文档的理念。如果例如您已经用@JsonProperty等注释了模型,我们不想使用@ApiModelProperty复制模型,因为它很容易脱离同步。



@JsonProperty注释的解决方法:

...

@JsonProperty("phonenumbers")
@ApiModelProperty(value = "list of phone numbers")
List<PhoneNumberDTO> phoneNumberDTOList = new ArrayList<>();

08-25 06:50