如何在 ApiModelProperty 的 swagger 上设置 POJO 数据

How to set POJO Data on swagger for ApiModelProperty

我的端点有以下 ApiModel -

public class CreateConfigRequest {
    @ApiModelProperty(example = "hive")
    String entityType;
    @ApiModelProperty(example = "imports")
    String entityNamespace;
    @ApiModelProperty(example = "hotel")
    String entityName;
    @ApiModelProperty(example = "{\"name\": \"hotel\", \"batch\": {\"type\": \"FullScan\"}}")
    JobConfig content;
}

其中 JobConfig 是另一个 pojo class。代码如下:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;
    private ProfileConfig profile;
    private ValidateConfig validate;
    private ActionConfig action;
}

我的招摇看起来像-

这就是POJO的基本结构。

它应该是什么样子 -

基本上我想了解如何将其设置为默认 JSON 结构。

如果您根本不想在 JSON 中包含 profilevalidateaction,您可以简单地使用 @JsonIgnore,如下所示:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;

    @JsonIgnore
    private ProfileConfig profile;

    @JsonIgnore
    private ValidateConfig validate;

    @JsonIgnore
    private ActionConfig action;
}

如果您只是不想在 Swagger 文档中列出它们,您可以使用 @ApiModelProperty 如下:

@Data
public class JobConfig {
    @NonNull private String name;
    @NonNull private BatchSpec batch;

    @ApiModelProperty(hidden = true)
    private ProfileConfig profile;

    @ApiModelProperty(hidden = true)
    private ValidateConfig validate;

    @ApiModelProperty(hidden = true)
    private ActionConfig action;
}

鉴于您不想隐藏属性而是显示更真实的示例,请尝试以下操作:

@Data
public class JobConfig {
    @NonNull 
    @ApiModelProperty(example = "hotel")
    private String name;

    @NonNull 
    private BatchSpec batch;

    private ProfileConfig profile;

    private ValidateConfig validate;

    private ActionConfig action;
}
@Data
public class BatchSpec {
    @ApiModelProperty(example = "FullScan")
    private String type;
}