我的问题似乎既简单又复杂。我有一个Display类,它有一个枚举,即DisplayMode。
public class Display {
private DisplayMode mode;
//getters and setters
public enum DisplayMode {
BIG("display.mode.big"),
SMALL("display.mode.small"),
MEDIUM("display.mode.medium");
private String modeValue;
DisplayMode(String modeValue) {
this.modeValue = modeValue;
}
public String toString() {
return this.name() + "/" + this.modeValue;
}
public String getModeValue() {
return this.modeValue;
}
}
}
现在,我有一个rest控制器,它以JSON格式接收Display,即
{"display": {"mode": "BIG"}}
它正以
的形式保存在MongoDB中{"display": {"mode": "BIG"}}
我想要的是,如果收到其余请求,则显示为
{"display": {"mode": "BIG"}} or
{"display": {"mode": "big"}} or anyCase insensitive value
应将其另存为数据库
{"display": {"mode": "display.mode.big"}}
当我想读取“通过rest控制器显示”时,它应该与保存在数据库中的显示相同。
使用Serilizer和Deserializer或其他方法的任何解决方案。谢谢
答案 0 :(得分:1)
使用@JsonValue
保存值&& @JsonCreator
进行反序列化。
@JsonValue
final String modeValue() {
return this.modeValue;
}
对于反序列化:
@JsonCreator
public static DisplayMode forValue(String v) {
return Arrays.stream(DisplayMode.values())
.filter(dm -> dm.name().equalsIgnoreCase(v))
.findAny().orElse(null);
}