是否有ObjectMapper任何方法来JSON字符串枚举

问题描述:

匹配我有一个枚举是否有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();

+0

谢谢您的答复,但有任何方式我不需要改变枚举,因为我不惹恼所有人使用的枚举 – Neil

+0

如果你这样做,你不会破坏任何其他代码...保证!看一看。你没有改变任何结构或任何价值;您需要获得所需值的唯一方法是在实际源代码中的任何现有枚举值上调用'.value()'调用 –

+0

此处的构造函数必须是私有的。 – JamesB

您可以利用现有的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?