Строка карты в 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,

Вы можете обратиться к моему блогу за примерами реализации.

Другие вопросы по тегам