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.
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))
| Entrada JSON | Saída JSON |
|---|---|
|
|
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.