У меня есть следующие class
и enum
s:
import lombok.Data;
// other imports...
@Data
public class MapTest{
private MyFirstEnum myFirstEnum;
private MySecondEnum mySecondEnum;
}
public enum MyFirstEnum{
MY_FIRST_ENUM1,
MY_FIRST_ENUM2
}
public enum MySecondEnum {
MY_SECOND_ENUM1,
MY_SECOND_ENUM2
}
и этот пружинный контроллер:
@PostMapping("/testMap")
@ResponseBody
public void TestMap(@RequestBody MapTest mapTest){
}
Поскольку можно найти enum по его имени , я хотел бы опубликовать json
на контроллере, и что соответствующие реквизиты будут сериализованы по их имени:
{
"myFirstEnum": "MY_FIRST_ENUM1",
"mySecondEnum": "MY_SECOND_ENUM2"
}
Я пытался настроить @JsonDeserialize
, но не смог получить тип перечисления внутри переопределенной функции:
// what type should i use here?
public static class StringToEnum extends JsonDeserializer<???> {
// how do i get the type of the current enum?
@Override
public ??? deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
??? res = Enum.valueOf(p.getText());
return res;
}
}
Обновление:
Я не упомянул, что я использую атрибут @data lombok для автоматической генерации методов получения и установки, что не очень хорошо работает с привязками перечисления (не знаю почему).
Я думаю, что лень имеет цену.