Olá. Rodando o código como foi feito na aula, ao invés de criar um json para cada restaurante contendo o cardápio dele, apenas o primeiro é criado (da Pizza Hut):
Olá. Rodando o código como foi feito na aula, ao invés de criar um json para cada restaurante contendo o cardápio dele, apenas o primeiro é criado (da Pizza Hut):
Olá! O problema é que o trecho que salva os arquivos JSON para cada restaurante está fora do bloco if response.status_code == 200
, ou seja, ele só roda se o status for diferente de 200 — justamente o contrário do esperado.
Veja o trecho do código:
if response.status_code == 200:
...
print(dados_json)
else:
print(f"Erro ao acessar a URL: {response.status_code}")
#criando um arquivo JSON para cada restaurante...
for nome_do_restaurante, dados in dados_restaurante.items():
Esse for
que salva os arquivos JSON está fora do bloco if
. Se o response.status_code
for 200, o código de escrita não é executado, e por isso você só vê o arquivo da Pizza Hut (provavelmente foi criado em uma execução anterior).
Você deve indentar o bloco de criação dos arquivos JSON para que ele fique dentro do if response.status_code == 200
:
if response.status_code == 200:
dados_json = response.json()
dados_restaurante = {}
for item in dados_json:
nome_do_restaurante = item['Company']
if nome_do_restaurante not in dados_restaurante:
dados_restaurante[nome_do_restaurante] = []
dados_restaurante[nome_do_restaurante].append({
'item': item['Item'],
'price': item['price'],
'description': item['description']
})
print(dados_json)
# criando um arquivo JSON para cada restaurante contendo o seu cardápio
for nome_do_restaurante, dados in dados_restaurante.items():
nome_do_arquivo = f'{nome_do_restaurante}.json'
with open(nome_do_arquivo, 'w') as arquivo_restaurante:
json.dump(dados, arquivo_restaurante, indent=4)
else:
print(f"Erro ao acessar a URL: {response.status_code}")
✅ Corrigir a indentação para que a escrita dos arquivos só aconteça quando a resposta da API for bem-sucedida (status_code == 200
).