如何检索@JsonProperty
注释中设置的值?
我希望能够测试REST端点的JSON值。我想使用现有的枚举而不是硬编码字符串。我似乎无法弄清楚如何在@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))
答案 0 :(得分:4)
您可以使用以下内容(不要忘记处理例外情况):
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();