说明
// Enum对象
@AllArgsConstructor
@Getter
public enum Type {
SMS("sms"),
APP("app"),
UNKNOWN("unknown"),
;
private String type;
}
// 实际的接口对象,里面有个属性是Enum
@Data
@Accessors(chain = true)
public class Noti {
private Type type;
private boolean sync;
}
springboot
接口难免用到Enum
类型,这个时候如何配置Enum类型序列化和反序列化呢?springboot
默认使用的JSON
序列化工具是jackson
.
使用
// Enum对象
@AllArgsConstructor
@Getter
public enum Type {
SMS("sms"),
APP("app"),
UNKNOWN("unknown"),
;
private String type;
@JsonCreator
public static Type fromString(String value) {
for (Type type : values()) {
if (type.getType().equalsIgnoreCase(value)) {
return type;
}
}
return Type.UNKNOWN;
}
@JsonValue
public String getTypeValue() {
return type;
}
}
// 实际的接口对象,里面有个属性是Enum
@Data
@Accessors(chain = true)
public class Noti {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Type type;
private boolean sync;
}
通过以上配置就可以实现, json中的字符串转化成Enum对象,以及Enum对象转化成json中的字符串.