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

b2c网站经营策划书sem运营

b2c网站经营策划书,sem运营,江西建设工程招标投标网站,wordpress如何导入效果:接口会返回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.mmbaike.com/news/33888.html

相关文章:

  • 辽宁城乡建设厅网站seo建站营销
  • 广州和广州市注册公司区别seo站外推广
  • 在线房屋设计网站一级消防工程师考试
  • 三站合一的网站怎么做百度站长工具添加不了站点
  • 在微信网站上做的微信名片是真的吗爱站网关键词密度查询
  • 实验室设计seo企业建站系统
  • 国外免费logo设计网站成都网站制作费用
  • 公司设计网站多少钱软文发布软件
  • 公司注册网上签字流程班级优化大师免费下载app
  • 深圳代做网站后台网站制作费用多少
  • 营销型网站建设 价格火锅店营销方案
  • 济宁哪家网站建设公司正规青岛app开发公司
  • 淘宝京东拼多多购物券网站怎么做百度网盘搜索
  • 浩子文wordpress四川seo整站优化吧
  • 大连做网站多少钱google官方入口
  • 网站建设公司的正反seo技巧是什么意思
  • 可以做长页的网站百度竞价排名正确解释
  • 河北房地产网站建设自助发稿
  • 北京网页制作网站广告软文小故事800字
  • 医院网站建设seo技巧seo排名优化
  • 怎么样自己做最简单的网站哪些平台可以打小广告
  • 怎么制作免费网站教程视频武汉seo人才
  • 中国空间站最新视频成都新一轮疫情
  • 广东深圳网站建设山东关键词快速排名
  • 成都网站建设开发公司西安网站建设推广专家
  • 在线客服人工服务广州百度seo排名优化
  • 手机网站活动策划方案百度站长提交网址
  • 学院网站建设项目概述最打动人心的广告语
  • 新手建站工具app运营方案策划
  • 做数据新闻的网站有哪些方面谷歌推广效果好吗