求解组会任务,如何给原始json日志脱敏?

求解方案,就是对原始json的数据进行脱敏,在原始json的基础上对用户名,邮箱,手机号等信息脱敏,数据量很大,求解可行的解决方案
,类似以下这种json数据,数据已经过处理.

{
    "_id": {
        "$oid": "5ef1d16a8f35080030d9ca0b"
    },
    "hasGeneratedId": true,
    "organisation": {
        "$oid": "5ef1d02f924838008888a688"
    },
    "lrs_id": {
        "$oid": "5ef1d12314e1340047ee4774"
    },
    "client": {
        "$oid": "5ef1d12314e1340047ee4775"
    },
    "person": null,
    "active": true,
    "voided": false,
    "timestamp": {
        "$date": "2020-06-23T09:54:50.788Z"
    },
    "stored": {
        "$date": "2020-06-23T09:54:50.788Z"
    },
    "hash": "c37991d63bd850eaa53debcb034a5ecb",
    "agents": ["mailto:aaaGroup@sina.net"],
    "relatedAgents": ["mailto:aaaaGroup@sina.net", "mailto:rfr@nercel.com"],
    "registrations": [],
    "verbs": ["http://experienced/"],
    "activities": ["http://rfgdfsoftggre.github.io/TinCan.NET"],
    "relatedActivities": ["http://rjjcisoggware.github.io/TinCan.NET"],
    "statement": {
        "actor": {
            "objectType": "Group",
            "name": "IcsyGroup-A1",
            "mbox": "mailto:pppGroup@sina.net"
        },
        "verb": {
            "id": "http://experienced/",
            "display": {
                "en-US": "experienced-2"
            }
        },
        "object": {
            "objectType": "Activity",
            "id": "http://russoftware.github.io/TinCan.NET",
            "definition": {
                "type": "https://www.stac.com.cn/xapi/testType",
                "name": {
                    "en-US": "(测试) : op时间"
                },
                "description": {
                    "zh-CN": "Details:授课时间为40分钟。"
                }
            }
        },
        "result": {
            "completion": true,
            "success": true,
            "response": "the response is test response"
        },
        "version": "1.0.1",
        "id": "36faed34-820d-5555-a0d9-ad88d8c88245",
        "timestamp": "2020-06-23T09:54:50.788Z",
        "stored": "2020-06-23T09:54:50.788Z",
        "authority": {
            "objectType": "Agent",
            "name": "a New Client",
            "mbox": "mailto:ooon@nercel.com"
        }
    },
    "processingQueues": [],
    "completedQueues": ["STATEMENT_PERSON_QUEUE", "STATEMENT_QUERYBUILDERCACHE_QUEUE", "STATEMENT_FORWARDING_QUEUE"]
}

大概就是自定义一个序列化类,通过键来判断一下要不要就值进行特殊处理,希望对你有帮助

class MyStringSerializer extends JsonSerializer<String> {

    @Override
    public void serialize(String s, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException {
        String currentName = jgen.getOutputContext().getCurrentName();
        if ("就是它".equals(currentName)) {
            jgen.writeString(s + "骚操作");
        }else{
            jgen.writeString(s);
        }
    }
}

像java jackson是可以自己指定字段序列化和反序列化的逻辑处理的,你要脱敏,直接json工具就可以实现脱敏,为什么还要转完以后再对字符串做处理?