网站的购物车怎么做/seo关键词词库
问题
在序列化枚举字段的时候,出现只序列化一个string的枚举名字。这对于普通java枚举类问题不大的,但是对于稍复杂一点java枚举类,就会出现字段丢失的情况。例如,如下枚举类:
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;@Getter
@AllArgsConstructor
public enum StatusEnum {OPEN(1, "开启"),CLOSE(2, "关闭");private final int code;private final String name;public static StatusEnum getByCode(int code){for (StatusEnum value : values()) {if (value.getCode() == code) {return value;}}return null;}
}
使用上述枚举类作为属性,序列化出来的结果为:
OPEN
。
序列化出来的结果是枚举名字,但是,我们期望序列化出来的结果为一个对象,如下:
{"code": 1,"name": "开启"
}
解决
只需在枚举类上加上如下注解即可:
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
参考:
- How To Serialize and Deserialize Enums with Jackson