2015-08-13 54 views
0

匹配我有一個枚舉是否有ObjectMapper任何方法來JSON字符串枚舉

public enum status{ 
    YES, 
    NO 
} 

從JSON字符串輸入「是」或「否」,有沒有ObjectMapper任何方法來匹配狀態。 YES爲「Yes」,status.NO爲「No」。

我不想改變枚舉,因爲INT我以前的系統,人們用枚舉所有的時間,我不想給別人造成問題

回答

0

你總是可以重新定義它想:

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();

+0

謝謝您的答覆,但有任何方式我不需要改變枚舉,因爲我不惹惱所有人使用的枚舉 – Neil

+0

如果你這樣做,你不會破壞任何其他代碼...保證!看一看。你沒有改變任何結構或任何價值;您需要獲得所需值的唯一方法是在實際源代碼中的任何現有枚舉值上調用'.value()'調用 –

+0

此處的構造函數必須是私有的。 – JamesB

0

您可以利用現有的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(); 

How to capitalize the first letter of a String in Java?