java 一个对象中的enum 的json格式是什么
时间: 2023-09-27 19:05:59 浏览: 146
Java中的枚举类型可以通过注解 `@JsonValue` 和 `@JsonCreator` 来自定义JSON序列化和反序列化规则。
假设有以下枚举类型:
```java
public enum Gender {
MALE("M"),
FEMALE("F");
private String code;
Gender(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
```
我们可以通过 `@JsonValue` 注解来指定JSON序列化规则:
```java
public enum Gender {
MALE("M"),
FEMALE("F");
@JsonValue
private String code;
Gender(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
```
这样,在将 `Gender` 对象序列化为JSON字符串时,会将枚举对象转换为它的 `code` 属性值。
例如,`Gender.MALE` 序列化为 `M`,`Gender.FEMALE` 序列化为 `F`。
反过来,我们可以通过 `@JsonCreator` 注解来指定JSON反序列化规则:
```java
public enum Gender {
MALE("M"),
FEMALE("F");
private String code;
Gender(String code) {
this.code = code;
}
public String getCode() {
return code;
}
@JsonCreator
public static Gender fromCode(String code) {
for (Gender gender : Gender.values()) {
if (gender.code.equals(code)) {
return gender;
}
}
throw new IllegalArgumentException("Invalid Gender code: " + code);
}
}
```
这样,在从JSON字符串反序列化为 `Gender` 对象时,会调用 `fromCode` 方法来创建枚举对象。
例如,`"M"` 反序列化为 `Gender.MALE`,`"F"` 反序列化为 `Gender.FEMALE`。
阅读全文