枚举

  1. package com.meeno.boot.oa.employee.enums;
  2. import com.alibaba.fastjson.annotation.JSONType;
  3. import com.meeno.boot.oa.common.BaseEnum;
  4. import com.meeno.boot.oa.common.json.EnumSerializer;
  5. import com.meeno.boot.oa.common.json.EnumDeserializer;
  6. /**
  7. * @description: 员工状态枚举
  8. * @author: Wzq
  9. * @create: 2020-03-13 16:30
  10. */
  11. @JSONType(serializer = EnumSerializer.class, deserializer = EnumDeserializer.class, serializeEnumAsJavaBean = true)
  12. public enum EmployeeStatusEnum implements BaseEnum {
  13. ON_THE_JOB(1),//在职
  14. DIMISSION(2)//离职
  15. ;
  16. private Integer code;
  17. EmployeeStatusEnum(Integer code) {
  18. this.code = code;
  19. }
  20. @Override
  21. public Integer getCode() {
  22. return this.code;
  23. }
  24. }

EnumDeserializer.java

  1. package com.meeno.boot.oa.common.json;
  2. import com.alibaba.fastjson.parser.DefaultJSONParser;
  3. import com.alibaba.fastjson.parser.JSONLexer;
  4. import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  5. import com.meeno.boot.oa.common.BaseEnum;
  6. import java.lang.reflect.Type;
  7. public class EnumDeserializer implements ObjectDeserializer {
  8. @Override
  9. public <T> T deserialze(DefaultJSONParser parser, Type type, Object o) {
  10. final JSONLexer lexer = parser.lexer;
  11. Class cls = (Class) type;
  12. Object[] enumConstants = cls.getEnumConstants();
  13. if (BaseEnum.class.isAssignableFrom(cls)) {
  14. for (Object enumConstant : enumConstants) {
  15. BaseEnum baseEnum = (BaseEnum) enumConstant;
  16. if (lexer.intValue() == baseEnum.getCode()) {
  17. return (T) baseEnum;
  18. }
  19. }
  20. }
  21. return null;
  22. }
  23. @Override
  24. public int getFastMatchToken() {
  25. return 0;
  26. }
  27. }

EnumSerializer.java

  1. package com.meeno.boot.oa.common.json;
  2. import com.alibaba.fastjson.serializer.JSONSerializer;
  3. import com.alibaba.fastjson.serializer.ObjectSerializer;
  4. import com.meeno.boot.oa.common.BaseEnum;
  5. import java.io.IOException;
  6. import java.lang.reflect.Type;
  7. public class EnumSerializer implements ObjectSerializer {
  8. @Override
  9. public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
  10. if (o instanceof BaseEnum) {
  11. BaseEnum baseEnum = (BaseEnum) o;
  12. jsonSerializer.out.write(baseEnum.getCode().toString());
  13. } else {
  14. jsonSerializer.out.writeEnum((Enum<?>) o);
  15. }
  16. }
  17. }

SpringBoot返回枚举对象中的指定属性的更多相关文章

  1. JS基础_枚举对象中的属性

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 枚举对象中的属性 for . . in

    枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var  变量  in  对象){ } for  . . . in 语句  对象中有几个属性,循 ...

  3. JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)

    鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...

  4. C#比较两个对象中的指定字段值是否相等

    一.创建CompareFieldAttribute标识要比较的字段 using System; namespace CompareObjField { /// <summary> /// ...

  5. 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”

    在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be ...

  6. js对象中动态读取属性值 动态属性值 js正则表达式全局替换

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

  7. Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重

    上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码: 这是对简单数据类型的去重 //字符串集合进行简单 ...

  8. 对JavaScript对象数组按指定属性和排序方向进行排序

    引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数 ...

  9. SpringMVC 返回实体对象时屏蔽某些属性

    SpringMVC 可以直接已JSON的结果返回实体对象,可是返回时是所有属性与属性值都会一并返回, 怎样才能屏蔽某些属性?方法很简单,只要在实体对象类中要屏蔽的属性值上加 @JsonIgnore 注 ...

随机推荐

  1. excle名字后面直接跟别的出来

    名字后面直接跟别的出来 =IF($E6="","",VLOOKUP(E6,通讯录!$B$2:$D$1000,3,0)) $E6:是填写位置的地方 VLOOKUP ...

  2. Selenium启动Chrome浏览器提示“请停用以开发者模式运行的扩展程序”的解决办法

    安装了python selenium,运行下面代码: 1 from selenium import webdriver 2 3 browser = webdriver.Chrome() 4 brows ...

  3. python 01篇

    一.Pycharm 使用小tips 1.1 pycharm创建项目时,选择Python环境,不使用默认的虚拟环境 1.2 如何在pycharm中查看python版本 路径:File-Settings- ...

  4. python使用笔记18--写日志

    1 import nnlog 2 import traceback 3 #level:输出日志级别,debug:把所有的日志都打印出来,info:打印info以上的日志, 4 # warning:打印 ...

  5. SpringMVC中@Controller和@RequestMapping用法

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  6. Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本

    业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...

  7. RHEL7通过Rsyslog搭建集中日志服务器

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建rsyslog日志服务器的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相 ...

  8. Spring Cloud 从入门到精通(一)Nacos 服务中心初探

     什么是Nacos? Nacos是阿里巴巴开源的项目,是一个更易于帮助构建云原生应用的动态服务发现.配置管理和服务管理平台.英文全称 Dynamic Naming and Configuration ...

  9. jstack 命令使用经验总结

    jstack 命令的基本使用 jstack 在命令使用上十分简洁, 其信息量与复杂度主要体如今 thread dump 内容的分析上;web # 最基本的使用sudo -u xxx jstack {v ...

  10. SQL根据两个日期生成年、月、日

    1 DECLARE @beginTime DATETIME, @endTime DATETIME 2 SET @beginTime ='2019-03-01' 3 SET @endTime ='201 ...