Olá, Francisco!
Uma maneira de lidar com isso é personalizar o processo de desserialização do JSON para o Enum. Você pode fazer isso usando a anotação @JsonCreator
do Jackson, que é a biblioteca usada pelo Spring para converter JSON em objetos Java e vice-versa.
No Enum Especialidade
, você pode adicionar um método que irá converter uma string em um valor correspondente do Enum, ignorando a diferença entre maiúsculas e minúsculas. Veja como ficaria:
package med.voll.api.medico;
import com.fasterxml.jackson.annotation.JsonCreator;
public enum Especialidade {
ORTOPEDIA,
CARDIOLOGIA,
GINECOLOGIA,
DERMATOLOGIA;
@JsonCreator
public static Especialidade fromString(String value) {
for (Especialidade especialidade : Especialidade.values()) {
if (especialidade.name().equalsIgnoreCase(value)) {
return especialidade;
}
}
throw new IllegalArgumentException("Valor inválido para Especialidade: " + value);
}
}
Com essa modificação, o valor "ortopedia" (em minúsculas) em seu JSON será corretamente mapeado para o valor ORTOPEDIA
do Enum Especialidade
.
Espero ter ajudado e bons estudos!