How can I map a simple JSON object {"status" : "successful"}
automaticly map to my Java Enum within JAX-RS?
public enum Status {
SUCESSFUL ("successful"),
ERROR ("error");
private String status;
private Status(String status) {
this.status = status;
}
}
If you need further details feel free to ask :)
You can use Enum as well as any other Object as key. 2. Performance : EnumMap is a specialized Map implementation for use with enum type keys. EnumMaps are represented internally as arrays.
A specialized Map implementation for use with enum type keys. All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is created. Enum maps are represented internally as arrays. This representation is extremely compact and efficient.
By default, Jackson will use the Enum name to deserialize from JSON. If we want Jackson to case-insensitively deserialize from JSON by the Enum name, we need to customize the ObjectMapper to enable the ACCEPT_CASE_INSENSITIVE_ENUMS feature.
The following JAXB
annotations should do it. (I tested using Jettison
but I've not tried other providers):
@XmlType(name = "status")
@XmlEnum
public enum Status {
@XmlEnumValue(value = "successful")
SUCESSFUL,
@XmlEnumValue(value = "error")
ERROR;
}
This might help you
@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;
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With