All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.zeimao77.product.security.JacksonDesensitizateSerializer Maven / Gradle / Ivy

package top.zeimao77.product.security;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;

import java.io.IOException;

public class JacksonDesensitizateSerializer extends JsonSerializer implements ContextualSerializer {

    private JacksonDesensitization jacksonDesensitization;

    @Override
    public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException {
        this.jacksonDesensitization = property.getAnnotation(JacksonDesensitization.class);
        return this.jacksonDesensitization != null ? this : prov.findNullKeySerializer(property.getType(),property);
    }

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        int type = jacksonDesensitization.type();
        switch (type) {
            case JacksonDesensitization.MOBILEPHONE -> gen.writeString(DesensitizationUtil.mobilephone(value));
            case JacksonDesensitization.IDENTITYCARD -> gen.writeString(DesensitizationUtil.identityCard(value));
            case JacksonDesensitization.EMAIL -> gen.writeString(DesensitizationUtil.email(value));
            case JacksonDesensitization.NAME -> gen.writeString(DesensitizationUtil.name(value));
            case JacksonDesensitization.TELEPHONE -> gen.writeString(DesensitizationUtil.telephone(value));
            default -> gen.writeString(value);
        }
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy