1
resposta

[Bug] Aparecendo todos os restaurantes

Olá pessoal, boa tarde!

Fiz todos os passos da aula, porém quando rodo a aplicação app.py continua trazendo as informações de "Company" do Json, poderiam me orientar onde estou fazendo errado por favor?

import requests

url = 'https://guilhermeonrails.github.io/api-restaurantes/restaurantes.json'

response = requests.get(url) 
print(response)

if response.status_code == 200:
    dados_json = response.json()
    print(dados_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']})


else:
    print(f'O erro foi {response.status_code}')


print(dados_restaurante['McDonald’s'])
1 resposta

Parece que seu código está correto em termos de lógica para acessar os dados da API e processá-los. Contudo, se a sua intenção é filtrar ou manipular os dados de uma maneira específica e você continua vendo as informações que não deseja (como todas as informações de "Company"), vamos analisar alguns pontos que podem estar causando confusão.

Análise do Código

  1. Resposta da API: Você verifica se o status da resposta é 200 e, em caso afirmativo, processa os dados. Isso está correto.
  2. Processamento dos Dados: Você itera sobre os itens no JSON, supondo que ele é uma lista de dicionários onde cada item representa um restaurante. Você extrai o nome do restaurante usando item['Company'] e, em seguida, cria ou atualiza uma lista de itens para esse restaurante. Isso também parece correto com base na descrição do código.

Possíveis Problemas

  • Estrutura do JSON: Se você espera que ao imprimir dados_restaurante['McDonald’s'] veja informações filtradas mas continua vendo informações de "Company", pode haver um problema com a estrutura do JSON que não está sendo considerada corretamente no seu código. Certifique-se de que a estrutura do JSON está de acordo com o que você espera (uma lista de dicionários, cada um representando um restaurante).
  • Chaves do Dicionário: Verifique se as chaves usadas para acessar os valores no dicionário estão corretas e correspondem às chaves presentes no JSON ('Company', 'Item', 'price', 'description').
  • Sensibilidade a Maiúsculas/Minúsculas: Em Python, as strings são sensíveis a maiúsculas e minúsculas. Garanta que as chaves que você usa para acessar os dados no JSON (como 'Company', 'Item', 'price', 'description') estejam exatamente com o mesmo case que no JSON original.

Sugestões para Depuração

  • Imprima a Estrutura do JSON: Depois de converter a resposta em JSON (dados_json = response.json()), imprima esta variável ou inspecione-a para entender exatamente como os dados estão estruturados. Isso vai ajudá-lo a verificar se sua lógica de iteração e extração de dados está correta.
  • Verifique os Nomes dos Restaurantes: Certifique-se de que está usando o nome correto na última linha ao tentar acessar os dados de 'McDonald’s'. Qualquer diferença, mesmo um apóstrofo, pode causar um erro de chave não encontrada.

Resumindo

Se após estas verificações você ainda enfrenta problemas, o mais provável é que haja alguma discrepância entre a estrutura de dados que você espera e a estrutura real do JSON, ou talvez um pequeno erro de digitação ou sensibilidade a maiúsculas/minúsculas nas chaves do dicionário. Revisar a estrutura do JSON e como você acessa os dados é um bom passo para solucionar o problema.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade