Java将枚举类转为json返回给前端

Java将枚举类转为json返回给前端

1.后端将枚举类直接返回给前端时只会显示枚举名称

后端经常会使用到枚举类,想让前端知晓这个枚举类中常量的含义,要将其返回给前端。

直接返回枚举类的话,前端只会显示枚举名称,不是很友好。

2.使用 @JsonFormat 注解可以将枚举类转为json再返回给前端。

2.1添加maven依赖

java 复制代码
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

2.2在枚举类上添加@JsonFormat(shape = JsonFormat.Shape.OBJECT)

java 复制代码
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum PhaseEnum {

    //0:接地端,1:导线端A相, 2: 导线端B相,3: 导线端C相,4: 接地端A相,5: 接地端B相,6: 接地端C相
    PHASE_0(0, "接地端"),
    PHASE_1(1, "导线端A相"),
    PHASE_2(2, "导线端B相"),
    PHASE_3(3, "导线端C相"),
    PHASE_4(4, "接地端A相"),
    PHASE_5(5, "接地端B相"),
    PHASE_6(6, "接地端C相");

    private final Integer code;
    private final String name;

    PhaseEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     *根据name查code
     **/
    public static Integer getCodeByName(String name) {
        for (PhaseEnum phaseEnum : PhaseEnum.values()) {
            if (phaseEnum.getName().equals(name)) {
                return phaseEnum.getCode();
            }
        }
        return null;
    }

    /**
     *根据name查枚举类
     **/
    public static PhaseEnum getPhaseEnum(String name) {
        for (PhaseEnum temp : PhaseEnum.values()) {
            if (temp.getName().equals(name))  {
                return temp;
            }
        }
        return null;
    }
}

2.3编写接口返回给前端

java 复制代码
/**
 * 获取地线部件的相位枚举
 **/
@RequestMapping(value = "/getEarthwirePhase.do", method = {RequestMethod.GET})
@ResponseBody
@ApiOperation(value = "获取地线部件的相位枚举", notes = "获取地线部件的相位枚举")
public Object getEarthwirePhase() {
    return RestResponse.success(PhaseEnum.values());
}
相关推荐
洋不写bug5 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
菠萝加点糖5 小时前
Maven 坐标系统说明
java·maven
hm宋5 小时前
Canal 升级 jar 包操作文档(以升级 FastJSON 为例)
java·canal·jar
后台模板学习5 小时前
学习的心态高频面试题
java·数据库·学习
用户3126874877206 小时前
线程池到底怎么管理线程的?从 ThreadPoolExecutor 到拒绝策略全链路拆解
java
cpolar技术支持6 小时前
Kafka Streams 窗口统计怎么验收:本地跑订单流聚合,用 cpolar 给同事看只读结果页
java·docker·kafka·cpolar·kafka streams
爱读源码的大都督6 小时前
DeepSeek面试官问:生产RAG系统回答不准确,该如何定位和优化?这样回答,能让面试官当场给你Offer!
java·后端·python
杨运交7 小时前
[069][公共模块]Spring Boot 全局异常处理与参数校验实战(下):校验异常精细化处理与 WebFlux 适配
java·spring boot·后端
Raas1007 小时前
MAI Gateway(魔芋企业级AI网关)对比分析:AI网关和OpenRouter区别?企业级能力差距一览
java·服务器·网络·人工智能·gateway·ai网关·mai gateway
APItesterCris7 小时前
告别人工盯品!借助 Open‑Claw 快速搭建电商商品全自动监控与数据分析系统(完整实操代码)
java·大数据·前端·数据库