如何从Java对象获取序列化JSON中的枚举值
我有一个性别枚举(我无法编辑),它在Java类中使用。现在,当我需要将Java类序列化为JSON时,我希望Enum的值作为JSON的一部分,而不是Enum名称。例如,在我的枚举中,当这个枚举被序列化时,我希望值为我正在使用的{"gender":"Male"}
:
String underWritingJSONString = objectMapper.writeValueAsString(myObject);
public enum Gender {
MALE("Male"),
FEMALE("Female");
Gender(String gender) {
this.name = gender;
}
private String name;
String toValue() {
return name;
}
}
预期结果={"gender":"Male"}
当前结果={"gender":"MALE"}
下面是示例类
public class MyObject {
@JSONField
public Gender gender;
public MyObject() {
}
public Gender getGender() {
return this.gender;
}
}
# 1 楼答案
您需要添加带有注释
@JsonValue
的方法:将对象序列化为JSON时,将调用此方法
# 2 楼答案
(Jackson 2.6.2及以上)你现在可以简单地写: