【发布时间】:2016-04-29 16:52:04
【问题描述】:
我在尝试用 Java 序列化/反序列化一些 enum 时遇到了一些麻烦。这是我的枚举类:
FrequencyType.java:
@JsonInclude(Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public enum FrequencyType {
NONE,
HOURLY,
DAILY,
WEEKLY,
MONTHLY;
}
Controller.java
@RequestMapping(method = RequestMethod.POST)
public Object createFrequency(@RequestBody FrequencyType frequencyType) throws Exception {
...
frequencyManager.createFrequency(frequencyType);
...
}
我正在尝试使用createFrequency 方法将FrequencyType 作为json 输入。这是我的输入示例:
{
"frequencyType": "HOURLY"
}
但是,每当我尝试通过我的 REST API 调用此方法时,我都会收到一条错误消息:
"无法读取 JSON:无法反序列化 com.zuora.cds.api.schedule.FrequencyType 超出 START_OBJECT 令牌\n 在 [来源:java.io.PushbackInputStream@225337f8;行:1,列:1]; 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:不能 反序列化 com.zuora.cds.api.schedule.FrequencyType 的实例 START_OBJECT 令牌\n 在 [Source: java.io.PushbackInputStream@225337f8;行:1,列:1]",
我尝试在上面添加JsonInclude 和JsonIgnoreProperties 注释,但这似乎没有帮助。我还尝试像这样添加getters 和setters:
FrequencyType getNone() {
return FrequencyType.NONE;
}
FrequencyType getHourly() {
return FrequencyType.HOURLY;
}
FrequencyType getDaily() {
return FrequencyType.DAILY;
}
FrequencyType getWeekly() {
return FrequencyType.WEEKLY;
}
FrequencyType getMonthly() {
return FrequencyType.MONTHLY;
}
void setNone(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setHourly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setDaily(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setWeekly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
void setMonthly(FrequencyType frequencyType) {
this.equals(frequencyType);
}
因此 POJO 表示有望将 JSON 转换为 FrequencyType 但我最终得到了同样的错误。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
试试
{"frequencyType": 1},如果这不起作用SerializeFrequencyType,看看你的图书馆期望什么。 -
@ElliottFrisch 您能否详细说明您对
Serialize和FrequencyType工作的意义?第一种方法无效。
标签: java json spring serialization enums