我想用Jackson来反序列化json,我想将空字符串映射到STANDARD枚举类型。
当我尝试将JsonProperty与空字符串一起使用时,它将忽略空值并引发异常;
value not one of declared Enum instance names:......,STANDARD,...
Run Code Online (Sandbox Code Playgroud)
有什么办法可以解决这个问题?
public enum Type{
@JsonProperty("")
STANDARD,
@JsonProperty("complex")
COMPLEX,
....
}
Run Code Online (Sandbox Code Playgroud)
我的json;
....
"type": "",
....
Run Code Online (Sandbox Code Playgroud)
@JsonValue 将达到目的:
public enum Type {
STANDARD(""),
COMPLEX("complex");
private String value;
StatusType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
引用@JsonValue文档中的相关部分:
标记注释,指示带注释的访问器的值(字段或“ getter”方法[具有非无效返回类型的方法,无args]方法)将用作实例序列化的单个值,而不是通常的值收集价值属性的方法。[...]
Class这个注释最多可以注释a个访问者;如果发现多个,则可能引发异常。[...]注意:当用于Java枚举时,一个附加功能是带注释的方法返回的值也被视为要反序列化的值,而不仅仅是序列化为JSON字符串的值。这是可能的,因为Enum值的集合是恒定的,并且可以定义映射,但是通常不能对POJO类型执行此操作。因此,这不用于POJO反序列化。
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |