Introdução
JSON (JavaScript Object Notation) é um formato leve de intercâmbio de dados, amplamente usado em arquivos de configuração e na comunicação com APIs.
Embora as ferramentas do shell processem bem texto simples, formatos estruturados como JSON geralmente são mais fáceis e seguros de manipular em Python usando bibliotecas integradas.
Neste laboratório, você atuará como um desenvolvedor que precisa atualizar a configuração de uma aplicação. Você criará um arquivo de configuração JSON, escreverá um script Python para carregá-lo, modificará uma configuração e salvará as alterações em um novo arquivo.
Criar dados de exemplo
Nesta etapa, você criará um arquivo de configuração JSON de exemplo. Esse arquivo simula um arquivo de configurações típico de uma aplicação de software, contendo chaves para o nome da aplicação, a versão, o modo de depuração e os limites de conexão.
Primeiro, certifique-se de estar no diretório de trabalho correto:
JSON é um dos formatos de dados estruturados mais comuns nas operações modernas, porque APIs, ferramentas de nuvem e muitos sistemas de configuração o utilizam. Aprender a ler e alterá-lo com segurança é muito mais útil do que tratá-lo como texto simples.
cd ~/project
Agora, crie um arquivo chamado config.json usando um editor de texto, como o nano.
nano config.json
Cole o conteúdo a seguir no arquivo. Este objeto JSON contém um valor booleano (false), um número inteiro (100) e strings.
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": false,
"maxConnections": 100
}
Para salvar e sair do nano:
Para salvar e sair do nano, pressione Ctrl + O para gravar as alterações e, em seguida, Enter para confirmar o nome do arquivo. Depois, pressione Ctrl + X para sair do editor.
Você pode verificar o conteúdo do arquivo usando o comando cat:
cat config.json
O conteúdo JSON deverá ser exibido no terminal.
Ler JSON
Nesta etapa, você escreverá um script Python para ler o arquivo config.json. O módulo json do Python converte os dados JSON em um dicionário Python.
É aqui que o Python oferece uma vantagem clara em relação aos scripts básicos de shell. Em vez de procurar texto com expressões regulares e depender de uma estrutura simples, o Python analisa o arquivo de acordo com as regras do JSON e fornece tipos de dados reais para você usar.
Pense em json.load() como se ele estivesse “desempacotando” uma caixa de entrega. A função pega o texto armazenado no arquivo (a caixa) e o converte em um dicionário Python (o conteúdo), que você pode usar e modificar facilmente no código.
Crie um novo script Python chamado parse_json.py:
nano parse_json.py
Adicione o código a seguir ao arquivo. Esse script importa o módulo json, abre o arquivo de configuração e carrega os dados.
import json
## Open the JSON file
with open('config.json', 'r') as file:
## Load the data into a Python dictionary
data = json.load(file)
## Print the data to verify it was loaded correctly
print("Current Configuration:")
print(data)
print(f"Type of data: {type(data)}")
Salve e saia do nano (Ctrl+O, Enter, Ctrl+X).
Agora, execute o script para ver a saída:
python3 parse_json.py
Você deverá ver o dicionário exibido no console, confirmando que o Python analisou o arquivo JSON corretamente.
Modificar dados
Nesta etapa, você modificará os dados carregados no script Python. Como json.load() converte os dados em um dicionário Python padrão, você pode modificar os valores da mesma forma que faria com qualquer outro dicionário.
Observe a conversão dos tipos de dados. true e false do JSON tornam-se True e False no Python. Os números continuam sendo numéricos, em vez de se transformarem em strings simples. Isso torna comparações e cálculos posteriores muito mais seguros.
Abra novamente o arquivo parse_json.py para editá-lo:
nano parse_json.py
Modifique o script para alterar o valor da chave debug de False (que corresponde a false no JSON) para True. Adicione a lógica de modificação depois de carregar os dados, mas antes de exibi-los.
Atualize o código para que fique assim:
import json
with open('config.json', 'r') as file:
data = json.load(file)
print("Original Debug Status:", data['debug'])
## Modify the value
data['debug'] = True
print("Updated Debug Status:", data['debug'])
Salve e saia do nano.
Execute o script novamente para verificar a alteração na memória:
python3 parse_json.py
A saída deverá mostrar o status original como False e o status atualizado como True. Observe que, neste momento, essa alteração existe apenas na memória do programa Python e ainda não foi salva em um arquivo.
Salvar alterações
Nesta etapa, você salvará o dicionário modificado em um novo arquivo JSON. Para isso, será usada a função json.dump().
Esse ciclo de leitura, modificação e gravação é um padrão de automação muito comum. O script carrega dados estruturados, altera apenas os campos desejados e grava um JSON válido. Isso é muito mais confiável do que editar linha por linha quando a estrutura do arquivo se torna mais complexa.
Pense em json.dump() como se ele estivesse “empacotando” a caixa. A função pega o dicionário Python (os itens) e o converte novamente em formato de texto (a caixa lacrada), para que possa ser armazenado em um arquivo. É uma boa prática salvar em um arquivo novo, como new_config.json, para evitar substituir a configuração original durante os testes.
Abra o arquivo parse_json.py mais uma vez:
nano parse_json.py
Adicione o código para gravar o dicionário data em um arquivo chamado new_config.json. Usaremos o parâmetro indent=4 para tornar o arquivo de saída legível para humanos, com formatação hierárquica.
Seu script final deverá ficar assim:
import json
## 1. Read the original file
with open('config.json', 'r') as file:
data = json.load(file)
## 2. Modify the data
data['debug'] = True
## 3. Write to a new file
with open('new_config.json', 'w') as file:
json.dump(data, file, indent=4)
print("Configuration updated and saved to new_config.json")
Salve e saia do nano.
Execute o script para realizar a operação de leitura, modificação e gravação:
python3 parse_json.py
Se a operação for bem-sucedida, o script exibirá a mensagem de confirmação.
Verificar o resultado
Nesta etapa, você verificará se o novo arquivo de configuração foi criado e contém o valor atualizado.
A verificação é especialmente importante em arquivos estruturados, porque um script pode ser executado sem erros de sintaxe e ainda assim produzir um conteúdo lógico incorreto. Ler novamente a saída é a forma de confirmar tanto a criação do arquivo quanto a correção da alteração dos dados.
Liste os arquivos do diretório para confirmar que new_config.json existe:
ls -l
Agora, exiba o conteúdo do novo arquivo:
cat new_config.json
Você deverá ver uma saída semelhante a esta:
{
"appName": "SuperApp",
"version": "1.0.0",
"debug": true,
"maxConnections": 100
}
Observe que "debug" agora é true.
Você também pode comparar os arquivos original e novo usando o comando diff para ver exatamente o que foi alterado:
diff config.json new_config.json
A saída destacará a diferença entre as linhas de debug.
Resumo
Neste laboratório, você aprendeu a trabalhar com dados JSON usando Python. Primeiro, criou um arquivo de configuração JSON bruto e, em seguida, escreveu um script Python para analisar esse arquivo e convertê-lo em um dicionário. Depois, modificou os dados programaticamente e salvou a estrutura atualizada em um novo arquivo JSON.
Esse fluxo — Ler, Modificar e Gravar — é um padrão fundamental em automação e scripts de DevOps. Embora o Bash seja excelente para executar comandos, a capacidade do Python de lidar com dados estruturados, como JSON, faz dele uma ferramenta poderosa para gerenciar configurações complexas e dados de APIs.



