Строка карты в JSON-запросе в Enum in Request POJO
У меня есть Enum, который выглядит примерно так:
public enum Level {
HIGH ("hi"),
MEDIUM("med"),
LOW ("lo")
;
private final String levelCode;
private Level(String levelCode) {
this.levelCode = levelCode;
}
}
Это перечисление является элементом в другом классе запроса, например:
public class RequestPOJO{
Level level;
int somefield1; //other instance varilables
//...... other instance varilables
}
Я хочу сопоставить строковое поле (с именем levelCode) в запросе JSON этому перечислению. Я использую Джексона для сериализации. Есть ли способ сопоставить это строковое поле в запросе непосредственно с этим перечислением.
1 ответ
Ты можешь использовать @JsonValue
аннотация для нового метода внутри enum
, Этот метод должен вернуть String
что ничего кроме levelCode
в вашем примере. Если это сделано, это решит вашу проблему как для сериализации, так и для десериализации.
Просто чтобы держать вас в курсе, это не будет работать так же, если enum
имеет int
поле из-за ошибки с Джексоном. В таком случае вам нужно следовать другому подходу, используя @JsonCreator
,
Вы можете обратиться к моему блогу за примерами реализации.