1
resposta

[Dúvida] desafio 4 - animais.json

Descrição do exercício:

4 - Crie um arquivo chamado animais.json, contendo informações fictícias em formato JSON. O arquivo pode representar dados de animais, incluindo pelo menos três elementos no array.a) Leia o conteúdo do arquivo animais.json. b) Converta o conteúdo lido para um objeto JavaScript utilizando JSON.parse().

se eu faço um require const animais = require('./desafio4-animais.json'), animais já não é um objeto? por que eu precisaria passar esse conteúdo novamente para um objeto através do JSON.parse()?

1 resposta

Fala ai Gabrielle, tudo bem?

Usando um ambiente Node, ao importarmos um JSON usando o require() o proprio Node já faz a conversão de JSON para um Objeto JavaScript, logo, não é necessário utilizar o método JSON.parse().

Mas em outros casos acaba sendo necessário utilizar o JSON.parse() para converter.

Um exemplo simples da utilização do JSON.parse() é para Comunicação entre sistemas. Normalmente, quando transferimos ou recebemos algum dado para outra aplicação através do HTTP, por exemplo, não podemos enviar o JSON diretamente. Para resolver isso, o JSON é transformado em string e enviado no corpo da requisição. Nesse caso, precisaríamos usar um JSON.parse para converter os dados da requisição para Objeto Javascript.

Vamos a um exemplo no código para facilitar as coisas. Usando o Node, vamos fazer uma requisição GET para a API da viacep.com.br. Ela é uma API simples, passamos um CEP na URL e ele retorna as informações do CEP. Vamos usar o módulo https do Node para isso.

const https = require('https');

// Fazendo uma solicitação HTTP para a API do Via CEP
https.get('https://viacep.com.br/ws/01001000/json/', (res) => {

  // Essa função só executa quando receber algum dado da resposta
  res.on('data', (data) => {
    // Esse parametro data recebe o corpo da resposta da API, mas em string
    const cep = JSON.parse(data);
    console.log('Informações do CEP:', cep);
  });
  
}).on('error', (error) => {
  console.error('Erro ao fazer a solicitação HTTP:', error.message);
});

No exemplo acima, fazemos uma requisição simples e nela recebemos uma resposta em JSON. Porém, como está sendo passada por HTTP ela vem em formato de string, então usamos o JSON.parse() para converter em Objeto JavaScript.

O resultado do código no console vai ser:

Informações do CEP: {
  cep: '01001-000',
  logradouro: 'Praça da Sé',
  complemento: 'lado ímpar',
  bairro: 'Sé',
  localidade: 'São Paulo',
  uf: 'SP',
  ibge: '3550308',
  gia: '1004',
  ddd: '11',
  siafi: '7107'
}

Espero que tenha ajudado. Qualquer dúvida é só responder aqui no fórum.