匹配我有一個枚舉是否有ObjectMapper任何方法來JSON字符串枚舉
public enum status{
YES,
NO
}
從JSON字符串輸入「是」或「否」,有沒有ObjectMapper任何方法來匹配狀態。 YES爲「Yes」,status.NO爲「No」。
我不想改變枚舉,因爲INT我以前的系統,人們用枚舉所有的時間,我不想給別人造成問題
匹配我有一個枚舉是否有ObjectMapper任何方法來JSON字符串枚舉
public enum status{
YES,
NO
}
從JSON字符串輸入「是」或「否」,有沒有ObjectMapper任何方法來匹配狀態。 YES爲「Yes」,status.NO爲「No」。
我不想改變枚舉,因爲INT我以前的系統,人們用枚舉所有的時間,我不想給別人造成問題
你總是可以重新定義它想:
public enum Status {
YES("Yes"),
NO("No");
private final String status;
private Status(final String status) {
this.status = status;
}
public String value() {
return this.status;
}
}
然後使用這樣的東西:Status.YES.value()
;
您可以利用現有的toString()
方法在所有Java枚舉:
http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html
,並在返回String
呼叫compareToIgnoreCase
方法將它與輸入比較:
http://www.tutorialspoint.com/java/java_string_comparetoignorecase.htm
或者您可以撥打toUpperCase
輸入String
,然後昏迷他們:
http://www.tutorialspoint.com/java/java_string_touppercase.htm
最後,你可以使用前面提到toString
,並把所有的信件,除了第一個小寫:基於
String YesString = enumWithYESValue.toString().substring(0, 1) + enumWithYESValue.toString().substring(1).toLowerCase();
謝謝您的答覆,但有任何方式我不需要改變枚舉,因爲我不惹惱所有人使用的枚舉 – Neil
如果你這樣做,你不會破壞任何其他代碼...保證!看一看。你沒有改變任何結構或任何價值;您需要獲得所需值的唯一方法是在實際源代碼中的任何現有枚舉值上調用'.value()'調用 –
此處的構造函數必須是私有的。 – JamesB