Получить значение @JsonProperty, заданное в перечислении - PullRequest
0 голосов
/ 25 апреля 2018

Как получить значение, заданное в аннотации @JsonProperty?

Я хочу иметь возможность проверить значения JSON конечной точки REST. Я хотел использовать существующее перечисление вместо жесткого кодирования строки. Я не могу понять, как получить значение, установленное в аннотации @JsonProperty. ?

import com.fasterxml.jackson.annotation.JsonProperty;

public enum StatusType {
    @JsonProperty("unknown")
    UNKNOWN,
    @JsonProperty("warning")
    WARNING,
    @JsonProperty("success")
    SUCCESS,
    @JsonProperty("error")
    ERROR,
    @JsonProperty("info")
    INFO
}

В идеале я хотел бы сделать что-то вроде:

 mvc.perform(get("/status"))
            .andExpect(jsonPath("status").value(StatusType.INFO))

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете использовать следующее (не забудьте обработать исключения):

String value = StatusType.class.getField(StatusType.INFO.name()) 
                         .getAnnotation(JsonProperty.class).value();

В качестве альтернативы, в зависимости от ваших потребностей, вы можете определить свой enum следующим образом, используя @JsonValue:

public enum StatusType {

    UNKNOWN("unknown"),
    WARNING("warning"),
    SUCCESS("success"),
    ERROR("error"),
    INFO("info");

    private String value;

    StatusType(String value) {
        this.value = value;
    }

    @JsonValue
    public String getValue() {
        return value;
    }
}

Тогда вы можете использовать:

String value = StatusType.INFO.getValue();
...