es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar los datos POJO en Swagger para ApiModelProperty.

Tengo el siguiente ApiModel para mi endpoint:

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;
}

Donde JobConfig es otra clase POJO. Código a continuación:

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

Mi swagger se ve así:

enter image description here

Que básicamente es la estructura del POJO.

Cómo debería verse:

enter image description here

Básicamente, estoy buscando entender cómo puedo establecer una estructura JSON predeterminada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para establecer una estructura JSON predeterminada para el punto de conexión CreateConfigRequest, se pueden utilizar las anotaciones @JsonCreator y @JsonProperty en la clase JobConfig.

    Aquí hay un ejemplo:

    @Data
    public class JobConfig {
        @NonNull 
        private String name;
        @NonNull 
        private BatchSpec batch;
        private ProfileConfig profile;
        private ValidateConfig validate;
        private ActionConfig action;
    
        @JsonCreator
        public JobConfig(@JsonProperty("name") String name, 
                         @JsonProperty("batch") BatchSpec batch, 
                         @JsonProperty("profile") ProfileConfig profile, 
                         @JsonProperty("validate") ValidateConfig validate, 
                         @JsonProperty("action") ActionConfig action) {
    
            this.name = name;
            this.batch = batch;
            this.profile = profile;
            this.validate = validate;
            this.action = action;
    
            // Establecer valores predeterminados si es necesario
            if (this.profile == null) {
                this.profile = new ProfileConfig();
            }
            if (this.validate == null) {
                this.validate = new ValidateConfig();
            }
            if (this.action == null) {
                this.action = new ActionConfig();
            }
        }
    }
    

    En este ejemplo, utilizamos la anotación @JsonCreator para especificar un constructor personalizado. Luego utilizamos la anotación @JsonProperty para asignar los argumentos del constructor a las propiedades JSON.

    En el constructor, establecemos los valores de las propiedades y también establecemos cualquier valor predeterminado si es necesario.

    Con esto en su lugar, la estructura JSON predeterminada para CreateConfigRequest será:

    {
        "entityType": "hive",
        "entityNamespace": "imports",
        "entityName": "hotel",
        "content": {
            "name": "",
            "batch": {
                "type": ""
            },
            "profile": {
                // valores predeterminados aquí
            },
            "validate": {
                // valores predeterminados aquí
            },
            "action": {
                // valores predeterminados aquí
            }
        }
    }
    

    Por supuesto, puede personalizar los valores predeterminados según sea necesario para su caso de uso específico.

Comments are closed.