Как получить значение, установленное в аннотации @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))




Вы можете использовать следующее (не забудьте обработать исключения):
String value = StatusType.class.getField(StatusType.INFO.name())
.getAnnotation(JsonProperty.class).value();
В качестве альтернативы, в зависимости от ваших потребностей, вы можете определить свое перечисление следующим образом, используя @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();
Для обратной задачи (т.е. получения Enum из JsonProperty) можно использовать следующий метод: stackoverflow.com/questions/64415585/…