Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Tipo Enum em JSON

Olá, no minuto 06:30 há um erro na requisição pois a especialidade foi passada com letras minúsculas. Ao invés de passar a especialidade seguindo os o padrão de nomenclatura do enum, há outra forma para que, não só a especialidade, mas qualquer outro campo, não tenha essa necessidade de passar exatamente como o atributo está nomeado?

1 resposta
solução!

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!