百度竞价找谁做网站,新冠咳嗽怎么办,雅联网站建设,长沙网站制作哪1. 前言 
在实际开发过程中#xff0c;前端的下拉框或者单选按钮的内容通常的需要和后端匹配的#xff0c;故一般会由后端将下拉框的内容或单选框的内容传给前端#xff0c;而这些内容在后端一般是由枚举类存储的#xff0c;如果后端直接返回枚举类#xff0c;返回结果将会… 
1. 前言 
在实际开发过程中前端的下拉框或者单选按钮的内容通常的需要和后端匹配的故一般会由后端将下拉框的内容或单选框的内容传给前端而这些内容在后端一般是由枚举类存储的如果后端直接返回枚举类返回结果将会是枚举类的名称而不是枚举类中的字段内容这不是我们想要的结果。  
2. 示例代码 2.1 controller层 
package com.suhuamo.test.controller;import com.suhuamo.test.enums.OpenStatusEnum;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** author suhuamo* date 2024-05-26* slogan U R MY SPECIAL* description*/
RestController
RequestMapping(/test)
public class TestController {/*** 获取当前开关状态* return OpenStatusEnum* {link com.suhuamo.test.enums.OpenStatusEnum}* version 1.0* author suhuamo*/GetMapping(/open-status/now)public OpenStatusEnum getOpenStatus(){return OpenStatusEnum.OPEN;}
} 2.2 enum代码 
package com.suhuamo.test.enums;import lombok.Getter;/*** author suhuamo* date 2024-05-26* slogan 五秒钟内说出三个你爱的人的名字...5..4..3..2..1..你是不是没有说自己也要爱自己哦。* description 开关状态枚举类*/
Getter
public enum OpenStatusEnum {CLOSE(0, 关闭),OPEN(1, 开启);/*** 类型*/private final Integer type;/*** 描述*/private final String desc;OpenStatusEnum(Integer type, String desc) {this.type  type;this.desc  desc;}public Integer getType() {return type;}public String getDesc() {return desc;}/*** 根据类型获取枚举,当无该类型时返回null** param type* return OpenStatus*/public static OpenStatusEnum getByType(Integer type) {for (OpenStatusEnum itemEnum : OpenStatusEnum.values()) {if (itemEnum.getType().equals(type)) {return itemEnum;}}return null;}
} 3. 目前输出效果 
在浏览器中输入localhost:{端口}/test/open-status/now即可访问。【我配置的项目端口是8888故端口输入的是8888】  
4. 解决办法 
在枚举类上添加注解 JsonFormat(shape  JsonFormat.Shape.OBJECT)。即枚举类的代码修改为 
package com.suhuamo.test.enums;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;/*** author suhuamo* date 2024-05-26* slogan 五秒钟内说出三个你爱的人的名字...5..4..3..2..1..你是不是没有说自己也要爱自己哦。* description 开关状态枚举类*/
JsonFormat(shape  JsonFormat.Shape.OBJECT)
Getter
public enum OpenStatusEnum {CLOSE(0, 关闭),OPEN(1, 开启);/*** 类型*/private final Integer type;/*** 描述*/private final String desc;OpenStatusEnum(Integer type, String desc) {this.type  type;this.desc  desc;}public Integer getType() {return type;}public String getDesc() {return desc;}/*** 根据类型获取枚举,当无该类型时返回null** param type* return OpenStatus*/public static OpenStatusEnum getByType(Integer type) {for (OpenStatusEnum itemEnum : OpenStatusEnum.values()) {if (itemEnum.getType().equals(type)) {return itemEnum;}}return null;}
} 5. 解决后输出效果 6. 复盘结论 
出现问题的原因是因为在调用接口返回数据时所有的对象都会被转换为JSON格式发送给前端而枚举类的JSON格式的内容默认是枚举值的名称。加上注解JsonFormat(shape  JsonFormat.Shape.OBJECT)就可以解决问题的原因是因为在转换JSON格式时带有该注解可以将对象按照对象的形式进行序列化即**字段名称,字段内容**的键值对形式进行序列化。附带的问题就是反序列化会出现问题即存入Redis时没问题但是取出有问题的。【故建议不要存Redis】