【发布时间】:2015-07-16 17:37:32
【问题描述】:
我正在尝试序列化一个将枚举作为其成员之一的类。我试图序列化的类中枚举的 setter 和 getter 不遵循经典格式。下面是我的意思的一个例子
public class myObj {
private StateEnum state;
public String getState() { // Problem with this getter
return state == null ? null : state.name();
}
public void setState(String state) { // Problem with this setter
this.state = StateEnum.valueOf(state);
}
}
public enum StateEnum implements Cloneable {
ACTIVE("Active"),
PREPROCESS("Preprocessing"),
SELECT("Selecting");
private final String description;
EntityState(String description) {
this.description = description;
}
@Override
public String toString() {
return "EntityState: " + this.description;
}
}
目前要序列化/反序列化,我正在使用类似于以下内容的东西。
myObj obj = new myObj();
ObjectMapper omap = new ObjectMapper();
String payload = omap.writeValueAsString(obj);
myObj deserializedObj = omap.readValue(obj);
我得到了错误:
com.fasterxml.jackson.databind.JsonMappingException: Name is null
如何在不更改 setter 和 getter 的情况下进行正确的序列化/反序列化(添加 @Json 标签是可以的)?
【问题讨论】: