Как вручную отображать поля Enum в JAX-RS
Как я могу сопоставить простой объект JSON {"status" : "successful"}
автоматически сопоставить мой Java Enum в JAX-RS?
public enum Status {
SUCESSFUL ("successful"),
ERROR ("error");
private String status;
private Status(String status) {
this.status = status;
}
}
Если вам нужна дополнительная информация, не стесняйтесь спрашивать:)
Ответы
Ответ 1
Следующие аннотации JAXB
должны это сделать. (Я тестировал с помощью Jettison
, но я не пробовал других поставщиков):
@XmlType(name = "status")
@XmlEnum
public enum Status {
@XmlEnumValue(value = "successful")
SUCESSFUL,
@XmlEnumValue(value = "error")
ERROR;
}
Ответ 2
Это может помочь вам
@Entity
public class Process {
private State state;
public enum State {
RUNNING("running"), STOPPED("stopped"), PAUSED("paused");
private String value;
private State(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return this.value;
}
@JsonCreator
public static State create(String val) {
State[] states = State.values();
for (State state : states) {
if (state.getValue().equalsIgnoreCase(val)) {
return state;
}
}
return STOPPED;
}
}
}