您可以在Java中更改ENUM的名称吗? 例如,我有枚举 -
public enum CloudType {
AZURE, OPENSTACK
}
一个班级 -
public class Env{
private CloudType cloudType;
}
在JACKSON解析期间,如果我给 -
{
"cloudType":"AZURE"
}
或
{
"cloudType":"azure"
}
它会给我一个Env
对象cloudType=AZURE
?
有一个线程(Jackson databind enum case insensitive),但我们真的需要这么做吗? 或者
@XmlEnumValue("azure")
AZURE("azure"),
就够了吗?
答案 0 :(得分:1)
您可以将enum
实例的Java名称与其JSON表示形式分离。
您应该向enum CloudType
添加@JsonValue
- 带注释的方法,告诉Jackson在读/写JSON时要使用哪个值。
为此,您还需要一个构造函数来初始化此值。
像这样:
public enum CloudType {
AZURE("azure"),
OPENSTACK("openstack");
private final String value;
private CloudType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
}
然后杰克逊会将CloudType.AZURE
序列化为"azure"
,
并将"azure"
反序列化为CloudType.AZURE
。