SpringBoot返回枚举对象中的所有属性以对象的形式返回(⼀个@JSONType解
决)
⼀、前⾔
最近⼩编在开发中遇到个问题,就是关于枚举⽅⾯的使⽤。⼀些固定不变的数据我们可以通过枚举来定义,减少对数据库的查询。是⼀种常见的开发技巧!
常见场景的需求是:通过某⼀个属性获取对应的枚举属性的另⼀个值;还有就是常量枚举,⽐如⼀下统⼀返回状态和编码!
⼩编的需求是把枚举中的所有属性都取出来,转成实体类那种返回给前端!
最简单的解决就是拿到所有的然后便利加到新的集合⾥,这样还需要定义⼀个实体类来接收转⼀下!
这样有点⿇烦,⼩编也是⽆意发现了,项⽬中有以前⼤佬留下来的⼀个注解@JSONType(serializeEnumAsJavaBean = true),⼀加上只需要我们使⽤枚举.values()即可直接帮助我们返回了,注解为alibaba.fastjson。
⼆、导⼊依赖
<dependency>
<groupId>com.alibaba</groupId>
fastjson忽略属性<artifactId>fastjson</artifactId>
</dependency>
三、枚举类
import JSONType;
/**
* @author wangzhenjun
* @date 2022/3/23 10:05
*/
@JSONType(serializeEnumAsJavaBean =true)
public enum SeasonEnum {
USER_SCOPE("001","春"),
DEPT_SCOPE("002","夏"),
ORG_SCOPE("003","秋"),
ALLIANCE_SCOPE("004","冬");
private String code;
private String name;
SeasonEnum(String code, String name){
this.name = name;
}
public String getCode(){
return code;
}
public String getName(){
return name;
}
}
四、controller处理
@GetMapping("/listSeason")
public SeasonEnum[]listSeason(){
return SeasonEnum.values();
}
五、结果展⽰
[
{
"code":"001",
"name":"春"
},
{
"code":"002",
"name":"夏"
},
{
"code":"003",
"name":"秋"
},
{
"code":"004",
"name":"冬"
}
]
六、总结
这样就完美完成枚举转实体类了,⽽且还没有新增实体类,⼀个注解解决哈!!看到这⾥了,对你有⽤帮⼩编点个赞呗有缘⼈才可以看得到的哦