ObjectMapper默认将枚举类型Enum转换为它的名称,亦即为字符串,比如将枚举ENABLE(0, “启用”),输出为“ENABLE”,但是前台想要的是对象类型的格式{“value”:“1”,“name”:“禁用”},这种时候加个注解即可
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 模板状态枚举
*/
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum TemplateStateEnum {
ENABLE(0, "启用"),
DISABLE(1, "禁用");
// 值
private int value;
// 名称
private String name;
private TemplateStateEnum(int value, String name) {
this.value = value;
this.name = name;
}
/**
* **根据value值获取枚举对象**
* @param value
*/
public static TemplateStateEnum getEnum(int value){
TemplateStateEnum[] arr$=values();
int len$ = arr$.length;
for(int i$ = 0; i$ < len$; ++i$) {
TemplateStateEnum status = arr$[i$];
if (status.getValue()==value) {
return status;
}
}
return null;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
加上注解如下:
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
返回的时候直接返回枚举对象TemplateStateEnum即可
获取枚举对象的方法是上述代码里的getEnum()方法