阅读量:4
在 Jackson 中反序列化枚举类,可以使用@JsonCreator注解和@JsonValue注解来指定反序列化和序列化方法。
示例代码如下:
import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; public enum Status { CREATED("created"), PROCESSING("processing"), COMPLETED("completed"); private String value; Status(String value) { this.value = value; } @JsonCreator public static Status fromValue(String value) { for (Status status : Status.values()) { if (status.value.equals(value)) { return status; } } throw new IllegalArgumentException("Invalid value: " + value); } @JsonValue public String getValue() { return value; } }
在上面的示例中,我们定义了一个枚举类Status,并通过@JsonCreator注解和@JsonValue注解分别指定了反序列化和序列化方法。@JsonCreator注解的方法用于根据枚举值的字符串值来获取对应的枚举实例,@JsonValue注解的方法用于获取枚举值的字符串表示。这样,当进行反序列化时,Jackson 就会根据字符串值找到对应的枚举实例,从而成功反序列化枚举类。