У меня есть простое перечисление со свойствами, OK и FAULT. Я пытаюсь вернуть значение в нижнем регистре при возврате его как объекта Json с помощью аннотации @JsonProperty. Сначала я подумал, что проблема в том, что я смешивал java.xmlbind.annotation с com.fasterxml, но после удаления java.xmlbind он все еще не работает.
Объект, использующий это перечисление, всегда показывает либо OK, либо FAULT с запросами json, а не ok и fault, как при запросе XML.
Использование Джексона 2.5.x
Любые идеи или предложения будут с благодарностью.
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
*
*/
@XmlEnum
public enum RequestStatusType {
/**
* Generic server A-OK ;)
*/
@XmlEnumValue(value = "ok")
@JsonProperty(value = "ok")
OK,
/**
* Generic unknown server fault
*/
@XmlEnumValue(value = "fault")
@JsonProperty(value = "fault")
FAULT;
/**
* Returns a RequestStatusType based on the string passed in
* @param requestStatusType the requestStatusType to get
*/
public static RequestStatusType getRequestStatus (String requestStatusTypeStr) {
try {
return valueOf( requestStatusTypeStr.toUpperCase() );
} catch (Exception e) {
return null;
}
}
/* (non-Javadoc)
* @see java.lang.Enum#toString()
*/
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
Вам нужно проверить версию Джексона. Ваш способ работает только с Jackson 2.7.2 или новее. См. Когда используется свойство @JsonProperty и для чего оно используется? . Надежда может помочь.
Спасибо, когда я читал документацию по API, я понял, что загружаю Jackson 2.5, как только я обновил его, это сработало.