1
resposta

[Dúvida] converte-json

Em um determinado ponto da aula, mais especificadamente após o arquivo 'estudante.json' ser convertido para string é falado o seguinte:

Mas o que acontece se chamarmos outro console.log() e pedir para ele exibir stringEstudante.nome. Se abrirmos o arquivo estudante.json, notamos ser uma propriedade. Usamos object.keys, então, teoricamente, poderíamos, pois é um objeto.

Após essa fala é tentando a seguinte comando:

console.log(stringEstudante.nome);

Então é falado pela instrutora:

Mas, agora que temos uma grande string com vários dados de estudante, não conseguimos mais manipular esse objeto, não conseguimos mais pegar .nome ou .idade.

Dúvida:

Na minha cabeça isso era esperado. Afinal, o arquivo .JSON foi transformado em string e não em objeto. E ainda nesse curso eu aprendi que .nome, .idade, .cpf é uma notação utlizada com objetos .

'Ahh, mas string é um objeto'! Sim, mas 'nome' é uma chave do OBJETO estudante. E por mais que string seja um objeto, ela não tem 'chave-valor'.

Qualquer coisa diferente disso me traz certa confusão. Pois como eu disse eu esperava que não fosse possível acessar '.nome' ou qualquer outra propriedade usando a 'notação ponto' justamente por se tratar de uma string e não de um objeto propriamente dito, com chave-valor.

1 resposta

Oi Rosemberg! Como vai?

Você está absolutamente certo em sua compreensão!

Quando você converte um objeto JSON em uma string usando JSON.stringify(), ele realmente se torna uma string comum, e não mais um objeto JavaScript. Isso significa que você não pode acessar propriedades como .nome ou .idade diretamente nessa string, porque strings não têm a estrutura de chave-valor que os objetos têm.

Para manipular os dados novamente como um objeto, você precisa converter essa string de volta para um objeto usando JSON.parse(). Isso transforma a string em um objeto JavaScript, permitindo que você acesse suas propriedades normalmente. Veja um exemplo prático:

const estudante = require('./estudante.json');

// Convertendo o objeto em string
const stringEstudante = JSON.stringify(estudante);
console.log(stringEstudante); // Mostra a string
console.log(typeof stringEstudante); // Mostra 'string'

// Tentando acessar a propriedade 'nome' na string (não funcionará)
console.log(stringEstudante.nome); // Isso retornará 'undefined'

// Convertendo a string de volta para um objeto
const objEstudante = JSON.parse(stringEstudante);
console.log(objEstudante); // Mostra o objeto
console.log(typeof objEstudante); // Mostra 'object'

// Agora você pode acessar as propriedades do objeto
console.log(objEstudante.nome); // Isso funcionará, mostrando o nome

Bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!