SpringBoot返回枚举对象中的指定属性
2024-10-19 14:41:38
枚举
package com.meeno.boot.oa.employee.enums;
import com.alibaba.fastjson.annotation.JSONType;
import com.meeno.boot.oa.common.BaseEnum;
import com.meeno.boot.oa.common.json.EnumSerializer;
import com.meeno.boot.oa.common.json.EnumDeserializer;
/**
* @description: 员工状态枚举
* @author: Wzq
* @create: 2020-03-13 16:30
*/
@JSONType(serializer = EnumSerializer.class, deserializer = EnumDeserializer.class, serializeEnumAsJavaBean = true)
public enum EmployeeStatusEnum implements BaseEnum {
ON_THE_JOB(1),//在职
DIMISSION(2)//离职
;
private Integer code;
EmployeeStatusEnum(Integer code) {
this.code = code;
}
@Override
public Integer getCode() {
return this.code;
}
}
EnumDeserializer.java
package com.meeno.boot.oa.common.json;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONLexer;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.meeno.boot.oa.common.BaseEnum;
import java.lang.reflect.Type;
public class EnumDeserializer implements ObjectDeserializer {
@Override
public <T> T deserialze(DefaultJSONParser parser, Type type, Object o) {
final JSONLexer lexer = parser.lexer;
Class cls = (Class) type;
Object[] enumConstants = cls.getEnumConstants();
if (BaseEnum.class.isAssignableFrom(cls)) {
for (Object enumConstant : enumConstants) {
BaseEnum baseEnum = (BaseEnum) enumConstant;
if (lexer.intValue() == baseEnum.getCode()) {
return (T) baseEnum;
}
}
}
return null;
}
@Override
public int getFastMatchToken() {
return 0;
}
}
EnumSerializer.java
package com.meeno.boot.oa.common.json;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.meeno.boot.oa.common.BaseEnum;
import java.io.IOException;
import java.lang.reflect.Type;
public class EnumSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
if (o instanceof BaseEnum) {
BaseEnum baseEnum = (BaseEnum) o;
jsonSerializer.out.write(baseEnum.getCode().toString());
} else {
jsonSerializer.out.writeEnum((Enum<?>) o);
}
}
}
最新文章
- Android JNI 和 NDK
- 在不格式化原有系统盘的情况下,利用grub4dos+firadisk制作RamOS VHD Win7总结
- 对target=";framename";的理解(实现分页的demo)
- struts 2.0部署
- python saltstack
- js中arguments的作用
- quick-cocos2dx学习笔记
- IDL 的读写
- C# Winform窗口之间传值的多种方法浅析(转)
- Asp.Net Core WebApi中接入Swagger组件(初级)
- 「JOISC 2018 Day 3」比太郎的聚会
- Chapter6_访问权限控制_访问权限修饰词
- C# JSON 转换
- CentOS7上搭建LDAP-PDC并且将windows 2008 R2加入LDAP-PDC域
- STL源码分析-function
- 【mysql】mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 + 同一事务中使用多个乐观锁的情况处理
- atitit.微信支付的教程文档 attilax总结
- DDD-领域驱动设计
- Intellij IDEA将工程打包成jar包并执行
- [总结]SHAREPOINT - CAML列表查询(上)
热门文章
- Java | 一个";.java";源文件中是否可以包括多个类(不包括内部类)
- 腾讯云短信详细教程(C#,WinForm)
- 【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
- 家庭账本开发day11
- Python+Requests+Xpath实现动态参数获取实战
- JavaScript学习笔记:你必须要懂的原生JS(二)
- browse下载插件DownThemAll!
- 搭建NFS服务
- YsoSerial 工具常用Payload分析之CC5、6(三)
- 使用Pycharm创建Django项目无法创建app.