Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

02. Assincronicidade - Exercício 5

Olá, pessoal, tudo bem?

Como podem ser tratados JSON um pouco mais complexos?

======================================================

O exercício 5 funcionou corretamente para JSON simples, mas demorei para identificar um erro que estava ocorrendo durante os testes.

JSON muito complexos não funcionaram retornando o erro:

"Erro na leitura do arquivo TypeError: dados.forEach is not a function at HTMLInputElement."

Exemplo de JSON:

{
  "livros": [
    {
      "imgCapa": "https://s3.novatec.com.br/capas/9788575226834.jpg",
      "descricao": "<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi eleifend, purus quis laoreet faucibus, ante augue malesuada mi, id rhoncus augue lorem eget elit. Ut sollicitudin sodales purus.</p>",
      "titulo": "Primeiros passos com a linguagem Rust",
      "pgAutores": {
        "pgAutor1": "autores/jose-manzano.php"
      },
      "autores": {
        "autor1": "José Augusto N. G. Manzano"
      },
      "categoria": "Programação",
      "isbn": "978-85-7522-683-4",
      "ano": "2018",
      "paginas": "312",
      "preco": 69,
      "estoque": "Disponível também em formato ebook"
    },

    {
      "imgCapa": "https://s3.novatec.com.br/capas/9788575226674.jpg",
      "descricao": "<p>Phasellus libero felis, blandit nec, commodo ut, imperdiet ut, nibh. Suspendisse potenti. Donec ullamcorper cursus dolor. Duis vitae ipsum. Maecenas dapibus hendrerit diam. Morbi varius, massa id pretium accumsan, nunc lorem congue libero, ut euismod metus libero id nulla.</p>",
      "titulo": "Programação em Baixo Nível",
      "pgAutores": {
        "pgAutor1": "autores/igor-zhirkov.php"
      },
      "autores": {
        "autor1": "Igor Zhirkov"
      },
      "categoria": "Hardware &amp; Robótica",
      "isbn": "978-85-7522-667-4",
      "ano": "2018",
      "paginas": "576",
      "preco": 120,
      "estoque": "Disponível também em formato ebook"
    }
  ]
}
1 resposta
solução!

Oi Luciano,

O erro TypeError: dados.forEach is not a function indica que você está tentando usar o método forEach em algo que não é um array.

No seu caso, parece que o JSON que você está recebendo não é diretamente um array, mas sim um objeto que contém um array dentro dele (a propriedade "livros").

Para corrigir isso, você precisa acessar o array de livros dentro do objeto JSON antes de usar o forEach.

Veja um exemplo:

fetch('seu_arquivo.json')
  .then(response => response.json())
  .then(data => {
    if (data && data.livros) { // Verifica se 'data' e 'data.livros' existem
      data.livros.forEach(livro => {
        console.log(livro.titulo); // Exemplo de como acessar os dados de cada livro
      });
    } else {
      console.error("Formato de JSON inválido ou sem a propriedade 'livros'");
    }
  })
  .catch(error => console.error("Erro na leitura do arquivo", error));

Neste exemplo, primeiro verificamos se data e data.livros existem para evitar erros caso o JSON não esteja no formato esperado.

Em seguida, usamos data.livros.forEach para iterar sobre o array de livros. 👍

É importante sempre verificar a estrutura do JSON que você está recebendo para acessar os dados corretamente. 🧐

Para saber mais: JSON.parse() e JSON.stringify() - Documentação da MDN sobre como trabalhar com JSON em JavaScript.

Continue praticando e explorando as possibilidades! 💪

tux matrix Caso este post o tenha ajudado, marque-o como solucionado ☑️. Bons Estudos! 🤓