catbean.pages.dev

Como criar um script para comparar dois arquivos JSON e mostrar diferenças?

Comparar arquivos JSON manualmente é uma tarefa tediosa e propensa a erros, especialmente quando os arquivos são grandes ou complexos. Um script automatizado não só economiza tempo, mas também garante precisão ao identificar diferenças estruturais e de conteúdo entre os arquivos.

Pré-requisitos

Passo 1: Instalar a biblioteca necessária

Para comparar arquivos JSON de forma eficiente, usaremos a biblioteca 'jsondiff', que fornece uma maneira simples de identificar diferenças entre estruturas JSON.

pip install jsondiff

Passo 2: Criar o script de comparação

Este script carrega dois arquivos JSON, compara-os e exibe as diferenças de forma clara e estruturada.

import json
import jsondiff

def comparar_json(arquivo1, arquivo2):
    with open(arquivo1, 'r') as f1:
        json1 = json.load(f1)
    with open(arquivo2, 'r') as f2:
        json2 = json.load(f2)
    
    diferencas = jsondiff.diff(json1, json2)
    
    print("Diferenças encontradas entre os arquivos:")
    print(json.dumps(diferencas, indent=2))

if __name__ == "__main__":
    arquivo1 = input("Digite o caminho do primeiro arquivo JSON: ")
    arquivo2 = input("Digite o caminho do segundo arquivo JSON: ")
    comparar_json(arquivo1, arquivo2)

Passo 3: Executar o script

Para usar o script, execute o seguinte comando no terminal, substituindo 'arquivo1.json' e 'arquivo2.json' pelos caminhos reais dos seus arquivos:

python comparar_json.py

Exemplo Prático

Arquivo 1 (entrada) Arquivo 2 (entrada) Saída esperada (diferenças)
{
  "nome": "João",
  "idade": 30,
  "cidade": "São Paulo"
}
{
  "nome": "João",
  "idade": 31,
  "cidade": "São Paulo"
}
{
  "idade": [
    30,
    31
  ]
}

Conclusão

Com este script, você automatiza a comparação de arquivos JSON em segundos, eliminando a necessidade de verificações manuais e reduzindo significativamente a chance de erros. A abordagem é escalável e pode ser adaptada para lidar com arquivos JSON de qualquer tamanho ou complexidade.