Skip to content

Add password/patient_name masking to json processing #6

@pkuppens

Description

@pkuppens
import json

def mask_value_for_keys(data, mask_keys=None, mask="*****"):
    if mask_keys is None:
        mask_keys = {"password", "patient_name"}

    def _mask(obj):
        if isinstance(obj, dict):
            return {
                key: (mask if key.lower() in mask_keys else _mask(value))
                for key, value in obj.items()
            }
        elif isinstance(obj, list):
            return [_mask(item) for item in obj]
        else:
            return obj

    # Check if data is a JSON string
    if isinstance(data, str):
        try:
            parsed = json.loads(data)
            masked = _mask(parsed)
            return json.dumps(masked)
        except json.JSONDecodeError:
            # Not a valid JSON string, return as is
            return data
    else:
        return _mask(data)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions