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

网站的总体风格包括双wordpress自动同步文章

网站的总体风格包括,双wordpress自动同步文章,网站分析怎么做,电子商务的就业方向自定义序列化 原理 当你使用Spring Boot的Spring Data或者Spring MVC等组件来处理JSON序列化时,Spring框架会在需要将Java对象转换为JSON字符串时调用JsonSerializer。这通常发生在控制器方法返回JSON响应时,或者在将对象保存到数据库等操作中。 // 注册…

自定义序列化
原理
当你使用Spring Boot的Spring Data或者Spring MVC等组件来处理JSON序列化时,Spring框架会在需要将Java对象转换为JSON字符串时调用JsonSerializer。这通常发生在控制器方法返回JSON响应时,或者在将对象保存到数据库等操作中。

// 注册到环境中
@Configuration
public class CustomJsonConverterConfig {@Beanpublic DictJsonSerializer serializer(ObjectMapper objectMapper) {final DictJsonSerializer dictJsonSerializer = new DictJsonSerializer();/*final BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer();final DoubleSerializer doubleSerializer = new DoubleSerializer();*/SimpleModule simpleModule = new SimpleModule();simpleModule.addSerializer(BaseDictVo.class, dictJsonSerializer);simpleModule.addSerializer(Long.class, ToStringSerializer.instance);simpleModule.addSerializer(BigInteger.class, ToStringSerializer.instance);
//        simpleModule.addSerializer(BigDecimal.class, bigDecimalSerializer);
//        simpleModule.addSerializer(Double.class, doubleSerializer);objectMapper.registerModule(simpleModule);return dictJsonSerializer;}
}

跟基础平台不同,返回的是序列化类,而不是objectMapper

编写序列化实现类
(注意:只有当返回对象实现了BaseDictVo才会生效,避免对所有代码进行过滤,导致性能损耗)

public class DictJsonSerializer extends JsonSerializer<BaseDictVo> {/*** 自定义字典序列化** @param source    字段值* @param generator Json 生成器* @param provider  Json 提供者* @throws IOException*/@Overridepublic void serialize(BaseDictVo source, JsonGenerator generator, SerializerProvider provider) throws IOException {// 写入JSON开头对象 {generator.writeStartObject();for (Field field : source.getClass().getDeclaredFields()) {final Object fieldValue = ReflectUtil.getFieldValue(source, field);final TransDict transDict = field.getDeclaredAnnotation(TransDict.class);if (Objects.isNull(fieldValue) || Objects.isNull(transDict)) {if (Objects.nonNull(fieldValue)) {generator.writeObjectField(field.getName(), fieldValue);}continue;}// 字典编码final String dictCode = transDict.code();// 转换的目标字段final String targetFiledName = transDict.alias();if (StringUtils.isBlank(dictCode)) {generator.writeObjectField(field.getName(), fieldValue);continue;}// 字段转换final List<String> strings = Arrays.asList(StringUtils.split(fieldValue.toString(), ","));StringBuilder dictValues = new StringBuilder();final Iterator<String> iterator = strings.iterator();while (iterator.hasNext()) {String code = iterator.next();String val = DictUtil.convertDict(dictCode, code);if (StringUtils.isBlank(code) || StringUtils.isBlank(val)) {continue;}dictValues.append(val);if (iterator.hasNext()) {dictValues.append(",");}}// 目标字段存在则设置目标字段值,否则设置当前字段值if (StringUtils.isNotBlank(targetFiledName)) {generator.writeObjectField(field.getName(), fieldValue);generator.writeObjectField(targetFiledName, dictValues.toString());} else {generator.writeObjectField(field.getName(), dictValues.toString());}}// 写入JSON结尾对象 }generator.writeEndObject();}
}

定义注解
用以标记字段,获取字典的编码,以及指定的目标替换字段

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface TransDict {String code() default "";String alias() default "";
}

定义基类
用以标记生效的类

public interface BaseDictVo {
}

使用类
使用注解示例

@Data
@ApiModel("反馈项vo")
public class CmFeedbackConfigVo implements BaseDictVo {@ApiModelProperty(value = "业务域编码(直饮水-DRINK、SUPPLY-供水)")@TransDict(code = "IAM_DOMAIN", alias = "businessDomainCodeValue")private String businessDomainCode;@ApiModelProperty(value = "业务域编码(直饮水-DRINK、SUPPLY-供水)")private String businessDomainCodeValue;
}

效果
每次前端发起请求时,因为RestController作用,会在返回时把结果序列化为Json,即触发自定义序列化类

http://www.yayakq.cn/news/834464/

相关文章:

  • 我的世界大盒子怎么做视频网站建站工具搭建前台网站
  • 做货运网站找哪家好免费网页申请
  • 建设工程竞标网站重庆vi设计公司
  • 西安网站建设那家伙网页空间和数据库的区别
  • 怎么建设在线视频网站企业网络营销策划案例
  • 怎么自己制作个网站郑州公司网站开发
  • 贵阳建筑公司网站建设梯子国外服务器
  • 做百度推广送网站吗如何用爬虫做网站监控
  • 网站文字模板长兴县建设管理网站
  • 公司网站设计是不是一次性收费的宁夏网站设计在哪里
  • 海南网络公司网站建设wordpress 添加外部链接
  • 创新的网站建设公司遵义会议在线
  • 做签证宾馆订单用啥网站网页制作模板的网站代码
  • 企业注册好了怎么做网站微信小程序网站建设
  • 网站技术方案海南省住房和城乡建设官方网站
  • 中国流量最大的网站排行合肥专业网站制作
  • 天津哪里做网站学校网站 功能
  • 类似非小号的网站怎么做网站建设规划文案
  • 厦门广告公司网站建设百度网页版链接地址
  • 关于做网站的笑话网站自适应布局 html5
  • 社区网站如何做移动互联网开发招人
  • 南京网站优化建站如何给wordpress上传较大视频
  • 重庆网站建设公司有哪些内容谁的网站模板利于优化
  • 天津正规制作网站公司cnetos 7 wordpress
  • 阜阳网站优化中国空间站进展
  • 网站建设项目结构分析报告seo网站内部优化
  • 访问国外网站好慢安庆网站建设公司
  • 石家庄网站建设外贸wordpress google统计
  • 域名注册商有哪些学seo网站推广好吗
  • 多企业宣传网站建设义乌外贸网站开发