当前位置: 首页 > news >正文

常州平台网站建设丹徒网站建设多少钱

常州平台网站建设,丹徒网站建设多少钱,知名企业网站建设案例,外贸营销型建站效果:接口会返回orderType,但是这个orderType是枚举的类型(1,2,3,4),我想多返回一个orderTypeDesc给前端展示,这样前端就可以直接拿orderTypeDesc使用了。 1. 定义注解 …

效果:接口会返回orderType,但是这个orderType是枚举的类型(1,2,3,4),我想多返回一个orderTypeDesc给前端展示,这样前端就可以直接拿orderTypeDesc使用了。

1. 定义注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
//作用是将当前类上的注解也追加到目标类上,如果不加的话,目标类及时加了@EnumTranslation注解,也不会集成该注解的所有注解
@JacksonAnnotationsInside
@JsonSerialize(using = EnumTranslationSerialize.class)
public @interface EnumTranslation {//生成的属性名,不写默认原名+DescString generateFieldName() default "";//参考的枚举,会根据改枚举的code获取对应的descClass<? extends Enum<?>> targetEnum() ;
}

2. 定义EnumTranslationSerialize类

EnumTranslationSerialize继承了JsonSerializer,实现了ContextualSerializer,用于序列化时多生成一个字段返回。

ContextualSerializer的作用:为了在序列化时获取属性上的注解信息,然后根据注解信息重新创建EnumTranslationSerialize来序列化,这样就能根据注解的配置来序列化了。

@Slf4j
public class EnumTranslationSerialize<E> extends JsonSerializer<Object> implements ContextualSerializer {private String targetFieldName;private LinkedHashMap<String, String> enumMap;public EnumTranslationSerialize() {//需要空构造方法,请勿删除}/*** 构造方法,获取当前属性名,生成的属性名,目标枚举*/public EnumTranslationSerialize(String fieldName, String targetFieldName, Class enumClass) {if (StringUtils.isNotBlank(targetFieldName)) {this.targetFieldName = targetFieldName;} else {this.targetFieldName = fieldName + "Name";}enumMap = new LinkedHashMap<>();try {Method getCode = enumClass.getMethod("getCode");Method getDesc = enumClass.getMethod("getDesc");for (Object everyEnum : EnumUtil.getEnumMap(enumClass).values()) {enumMap.put(getCode.invoke(everyEnum).toString(), getDesc.invoke(everyEnum).toString());}} catch (Exception e) {log.error(ExceptionUtils.getStackTrace(e));}}/*** 序列化规则*/@Overridepublic void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {if (Objects.isNull(o)) {return;}try {String codeValue = o.toString();jsonGenerator.writeString(codeValue);String value = enumMap.get(codeValue);//多写入一个属性if (Objects.nonNull(value)) {jsonGenerator.writeFieldName(this.targetFieldName);jsonGenerator.writeObject(value);}} catch (Exception e) {log.error(ExceptionUtils.getStackTrace(e));}}/*** ContextualSerializer接口的方法,作用是获取属性上的枚举*/@Overridepublic JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException {if (beanProperty != null) {EnumTranslation t = beanProperty.getAnnotation(EnumTranslation.class);if (t != null) {return new EnumTranslationSerialize<>(beanProperty.getName(), t.targetFieldName(), t.enumC());}}return serializerProvider.findNullValueSerializer(beanProperty);}
}

3. 使用

@Data
public class OrderVO {@Schema(description = "订单类型")@EnumTranslation(generateFieldName = "orderTypeDesc", enumC = OrderType.class)private Long orderType;
}
http://www.yayakq.cn/news/17195/

相关文章:

  • 电子商务的网站的建设内容深圳网站搭建哪里找
  • 网站信息核验单推广公司服务内容
  • 自助健站wordpress输出某一分类的文章
  • 网站建设的职称免费word在线编辑
  • 为什么要用模板建站免费做app网站有哪些
  • 海淀区网站建设聊城网站推广怎么做
  • 国内建站 wordpress印度网站建设
  • 户外旅游网站模板凡科网app下载
  • 建网站需要怎样做网站开发的需求分析论文
  • 华夏名网vps免费网站管理助手网站建设的业务流程图
  • 正规网站建设学习网公司哪家好营销策划首选
  • 专业制作网站图片网站定制开发什么意思
  • 哪些网站做写字楼出租wordpress 程序员博客主题
  • 定制手机壳的网站深圳宝安区是什么风险
  • 长安h5网站建设贴吧网站怎么做
  • 华宇网站建设做网站需要下载啥
  • 免费网页设计教程视频教程湖北网站seo
  • 做网站+广告费+步骤中堂做网站
  • 有源代码如何做网站郑州地方网络推广网站
  • 网站建设内容苏州网站优化维护
  • 交互网站建设wordpress生活类主题
  • 做网站主图多少钱网站建设商城网站
  • 创建网站的注意事项wordpress网站logo没显示
  • 有关电商网站开发的参考文献山西省建设信息网站
  • 8469网站哪里有建设银行
  • 食堂网站建设南通开发区人才网
  • 国外可以用什么网站做问卷酒店宾馆客栈旅馆古典网站源码 asp源码带后台
  • h5制作软件推荐亚马逊关键词优化软件
  • 淮南市建设工程质量监督中心网站asp网站采集
  • 昌平网站开发多少钱郑州最出名的不孕不育医院