递归脱敏

作者: 夏年城丶凌 | 来源:发表于2020-04-23 17:58 被阅读0次

    说明

    对特定类型的返回值进行深度递归处理
    List<Map<String,Object>>Map<String,Object> 或是可以将JSON字符串转成对应的格式类型

    递归说明

    判断类类型是否是List,如果是List,则进入递归体,结束标志位String

    脱敏核心方法

    map.put(key, support.desensitize(field, keyRule));
    单独写了一个脱敏工具JAR包做处理,保证基本信息(姓名、身份证、手机号等)的安全

    `private static final String RESULT_TYPE_STRING = "String";
    
    private static final String RESULT_TYPE_LIST = "List";
    
    private static final String RESULT_TYPE_MAP = "Map";
    
    private static DesensitizeSupport support = new DesensitizeSupport();
    
    public static void recursiveSearch(List<Map<String,String>> keyList,Object b){
        if (b == null || b.getClass() == null) {
            return;
        }
        String classType = b.getClass().getSimpleName(); //类类型
        
        if (RESULT_TYPE_STRING.equals(classType)){
            return;
        }
        
        if (classType.contains(RESULT_TYPE_LIST)){
            List list = (List) b;
            for (Object x : list){
                recursiveSearch(keyList,x);
            }
        }
        
        if (classType.contains(RESULT_TYPE_MAP)){
            Map<String,Object> map = (Map<String,Object>) b;
            for(Map<String, String> keyMap : keyList){
                String key = keyMap.get("key");
                String keyRule = keyMap.get("keyRule");
                if (map.get(key) != null){
                    String field = String.valueOf(map.get(key));
                    try {
                        map.put(key, support.desensitize(field, keyRule));
                    } catch (DesensitizeException e) {
                        e.printStackTrace();
                    }
                }
            }
            Collection<Object> objects = map.values();
            for (Object x : objects){
                recursiveSearch(keyList,x);
            }
        }
    }`
    

    不足之处

    递归的深度如果没有做限制的话,容易报OMM异常(虚拟机栈最大空间为1M),需要做递归深度的限制处理。

    相关文章

      网友评论

        本文标题:递归脱敏

        本文链接:https://www.haomeiwen.com/subject/rpoaihtx.html