SpringBoot返回枚举对象中的指定属性
枚举
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);
}
}
}
SpringBoot返回枚举对象中的指定属性的更多相关文章
- JS基础_枚举对象中的属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 枚举对象中的属性 for . . in
枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var 变量 in 对象){ } for . . . in 语句 对象中有几个属性,循 ...
- JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)
鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...
- C#比较两个对象中的指定字段值是否相等
一.创建CompareFieldAttribute标识要比较的字段 using System; namespace CompareObjField { /// <summary> /// ...
- 在实体对象中访问导航属性里的属性值出现异常“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 ...
- js对象中动态读取属性值 动态属性值 js正则表达式全局替换
$(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...
- Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重
上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码: 这是对简单数据类型的去重 //字符串集合进行简单 ...
- 对JavaScript对象数组按指定属性和排序方向进行排序
引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数 ...
- SpringMVC 返回实体对象时屏蔽某些属性
SpringMVC 可以直接已JSON的结果返回实体对象,可是返回时是所有属性与属性值都会一并返回, 怎样才能屏蔽某些属性?方法很简单,只要在实体对象类中要屏蔽的属性值上加 @JsonIgnore 注 ...
随机推荐
- Adaptive AUTOSAR 学习笔记 5 - 架构 - 物理视图
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- C语言:文本文件和二进制文件
学习了 fopen() 函数后,我们知道它的第二个参数是一个字符串,用来表示文件打开方式.如果字符串中出现b,则表示以二进制方式打开文件:如果字符串中出现t,或者两者都不出现,则表示以文本方式打开文件 ...
- python pandas 读excel类
import pandas as pd '''特例说明 file1="a20201220.xlsx" sheetname='Sheet1' df=pd.read_excel(fil ...
- java并发编程基础——线程同步
线程同步 一.线程安全问题 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安 ...
- python基础之操作数据库(pymysql)操作
import pymysqlimport datetime#安装 pip install pymysql"""1.连接本地数据库2.建立游标3.创建表4.插入表数据.查询 ...
- Java成长之路--一个非科班生的进阶之路
前言 笔者从事Java开发六年有余,从什么都不懂的小白一路成长到上市公司管理20人的技术leader.管理的团队,虽然人数不算多,但也是对于我这个非科班生这么多年努力的一种肯定.在技术的道路上,我没有 ...
- Spring解决Attribute tx bound to namespace httpwww.w3.org2000xmlns was already specified
Spring|解决Attribute "tx" bound to namespace "http://www.w3.org/2000/xmlns/" was a ...
- 前端基础css(三)
HTML:用于显示页面的内容 CSS:用于以什么样的形式(样式)去显示 一. 选择器 [1] 标签/元素选择器 (整个页面的所有的相同的标签都显示统一的样式) h1{ font-size: 20px; ...
- CreateWindow() -- 创建普通的窗口
(1)函数原型 1 HWND CreateWindow( 2 LPCTSTR lpClassName, //pointer to register class name 3 LPCTSTR lpWin ...
- Linux符号描述
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ...