是否有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()
;
答
您可以利用现有的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