ragfica.pages.dev

Como validar CPF em JSON aninhado com Python?

Validar CPFs dentro de estruturas JSON aninhadas pode ser uma tarefa desafiadora, especialmente quando se lida com grandes volumes de dados. Este método oferece uma solução eficiente e confiável, utilizando Python para automatizar o processo de validação, garantindo precisão e economizando tempo valioso.

Pré-requisitos

Implementando a Validação de CPF em JSON Aninhado

Para validar CPFs em JSON aninhado, primeiro precisamos criar uma função que valide um único CPF e, em seguida, percorrer recursivamente a estrutura JSON para aplicar essa validação a todos os CPFs encontrados.

import json
import re

def validar_cpf(cpf):
    # Remove caracteres não numéricos
    cpf = re.sub(r'[^0-9]', '', cpf)

    # Verifica se o CPF tem 11 dígitos
    if len(cpf) != 11:
        return False

    # Verifica se todos os dígitos são iguais
    if cpf == cpf[0] * 11:
        return False

    # Algoritmo de validação do CPF
    def calcular_digito(cpf, digitos):
        soma = sum(int(digito) * (digitos - i) for i, digito in enumerate(cpf[:digitos]))
        resto = soma % 11
        return 0 if resto < 2 else 11 - resto

    primeiro_digito = calcular_digito(cpf, 9)
    segundo_digito = calcular_digito(cpf, 10)

    return int(cpf[9]) == primeiro_digito and int(cpf[10]) == segundo_digito

def validar_cpf_json(data):
    if isinstance(data, dict):
        for key, value in data.items():
            if key.lower() == 'cpf':
                data[key] = {
                    'valor': value,
                    'valido': validar_cpf(value)
                }
            else:
                validar_cpf_json(value)
    elif isinstance(data, list):
        for item in data:
            validar_cpf_json(item)

# Exemplo de uso
json_data = '''
{
    "usuarios": [
        {"nome": "João", "cpf": "123.456.789-09"},
        {"nome": "Maria", "cpf": "111.111.111-11"}
    ]
}
'''

data = json.loads(json_data)
validar_cpf_json(data)
print(json.dumps(data, indent=2))

Exemplo Prático

Entrada JSON Saída JSON
{
    "usuarios": [
        {"nome": "João", "cpf": "123.456.789-09"},
        {"nome": "Maria", "cpf": "111.111.111-11"}
    ]
}
{
    "usuarios": [
        {"nome": "João", "cpf": {"valor": "123.456.789-09", "valido": true}},
        {"nome": "Maria", "cpf": {"valor": "111.111.111-11", "valido": false}}
    ]
}

Conclusão

Com este método, você automatiza a validação de CPFs em estruturas JSON aninhadas, garantindo precisão e eficiência. A abordagem recursiva permite lidar com qualquer nível de aninhamento, tornando o processo robusto e adaptável a diferentes formatos de dados.