枚举

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);
} }
}

最新文章

  1. Android JNI 和 NDK
  2. 在不格式化原有系统盘的情况下,利用grub4dos+firadisk制作RamOS VHD Win7总结
  3. 对target=&quot;framename&quot;的理解(实现分页的demo)
  4. struts 2.0部署
  5. python saltstack
  6. js中arguments的作用
  7. quick-cocos2dx学习笔记
  8. IDL 的读写
  9. C# Winform窗口之间传值的多种方法浅析(转)
  10. Asp.Net Core WebApi中接入Swagger组件(初级)
  11. 「JOISC 2018 Day 3」比太郎的聚会
  12. Chapter6_访问权限控制_访问权限修饰词
  13. C# JSON 转换
  14. CentOS7上搭建LDAP-PDC并且将windows 2008 R2加入LDAP-PDC域
  15. STL源码分析-function
  16. 【mysql】mysql增加version字段实现乐观锁,实现高并发下的订单库存的并发控制,通过开启多线程同时处理模拟多个请求同时到达的情况 + 同一事务中使用多个乐观锁的情况处理
  17. atitit.微信支付的教程文档 attilax总结
  18. DDD-领域驱动设计
  19. Intellij IDEA将工程打包成jar包并执行
  20. [总结]SHAREPOINT - CAML列表查询(上)

热门文章

  1. Java | 一个&quot;.java&quot;源文件中是否可以包括多个类(不包括内部类)
  2. 腾讯云短信详细教程(C#,WinForm)
  3. 【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
  4. 家庭账本开发day11
  5. Python+Requests+Xpath实现动态参数获取实战
  6. JavaScript学习笔记:你必须要懂的原生JS(二)
  7. browse下载插件DownThemAll!
  8. 搭建NFS服务
  9. YsoSerial 工具常用Payload分析之CC5、6(三)
  10. 使用Pycharm创建Django项目无法创建app.