Gist ID: 7e934be8ddfbe7642a9ce43182f34684

Aqui está um exercício simples para um estudante iniciante em Python, envolvendo a manipulação de dados em que você partirá de um arquivo JSON multidimensional e gravará os dados em um arquivo CSV. Vamos supor que você tenha um arquivo JSON chamado “dados.json” com a seguinte estrutura:

{
  "pessoas": [
    {
      "nome": "João",
      "idade": 25,
      "cidade": "São Paulo"
    },
    {
      "nome": "Maria",
      "idade": 30,
      "cidade": "Rio de Janeiro"
    },
    {
      "nome": "Carlos",
      "idade": 35,
      "cidade": "Belo Horizonte"
    }
  ],
  "veiculos": [
    {
      "marca": "Toyota",
      "modelo": "Corolla",
      "ano": 2018
    },
    {
      "marca": "Honda",
      "modelo": "Civic",
      "ano": 2020
    },
    {
      "marca": "Volkswagen",
      "modelo": "Golf",
      "ano": 2017
    }
  ]
}

Neste exemplo, temos duas listas de objetos: “pessoas” e “veiculos”. Você deseja ler esses dados do arquivo JSON e gravá-los em um arquivo CSV separado para cada lista, onde cada linha representa um objeto e as colunas representam os atributos de cada objeto.

Aqui está um exemplo de código em Python que realiza essa tarefa:

import json
import csv

# Abre o arquivo JSON
with open('dados.json', 'r') as file:
    data = json.load(file)

# Processa cada lista do JSON e cria um arquivo CSV correspondente
for key, values in data.items():
    # Gera o nome do arquivo CSV baseado na chave do JSON
    csv_filename = key + '.csv'

    # Abre o arquivo CSV para escrita
    with open(csv_filename, 'w', newline='') as file:
        writer = csv.writer(file)

        # Obtém as chaves do primeiro item para escrever como cabeçalho do CSV
        headers = list(values[0].keys())
        writer.writerow(headers)

        # Escreve os dados de cada item no CSV
        for item in values:
            writer.writerow(list(item.values()))
            
    print(f"CSV '{csv_filename}' gerado com sucesso!")

Após executar esse código, ele lerá os dados do arquivo JSON, criará dois arquivos CSV: “pessoas.csv” e “veiculos.csv”.