zoukankan      html  css  js  c++  java
  • Json序列化,前缀或者脱敏实现

    注解+aop

    一:定义一个注解

    二:在序列化时候,判断字段上是否有注解,进行序列化的操作

    三:在对应的字段上添加上注解

    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    @JacksonAnnotationsInside
    @JsonSerialize(using = SensitiveWordSerializer.class)
    public @interface SensitiveWord {
        SensitiveWordType sensitiveWordType() default SensitiveWordType.MOBILE ;
    }
    public class SensitiveWordSerializer extends JsonSerializer<String> implements ContextualSerializer {
    
        private SensitiveWordType sensitiveWordType  ;
    
        @Override
        public JsonSerializer<?> createContextual(SerializerProvider prov,BeanProperty property) throws JsonMappingException {
            SensitiveWord sensitiveWord = property.getAnnotation(SensitiveWord.class);
            if (sensitiveWord != null) {
                sensitiveWordType = sensitiveWord.sensitiveWordType();
            }
            return this ;
        }
    
        @Override
        public void serialize(String value,JsonGenerator gen,SerializerProvider serializers)
                throws IOException, JsonProcessingException {
            if (!StringUtils.hasText(value)) {
                gen.writeString(value);
                return;
            }
            if (sensitiveWordType != null) {
                value = value.replaceAll(sensitiveWordType.getRegex() , sensitiveWordType.getReplacement());
            }
            gen.writeString(value);
        }
    
    }
        @SensitiveWord
        @ApiModelProperty(value = "机构联系方式", example = "13688888888")
        private String contact;

    结果

    注解+序列化的实现

  • 相关阅读:
    git常用操作命令
    如何编写高质量代码
    Chrome调试工具简单介绍
    使用eclipse+tomcat搭建本地环境
    chrome设置--disable-web-security解决跨域
    利用Maven管理工程项目本地启动报错及解决方案
    用户输入验证【提升篇】
    简单【用户输入验证】
    【消息框】的返回值
    【消息框】的4种显示形式
  • 原文地址:https://www.cnblogs.com/xiebq/p/10139987.html
Copyright © 2011-2022 走看看