1
resposta

Comportamento do JSON em template string

Olá time Alura, gostaria de entender o comportamento do JSON quando utilizamos o template string.

Se eu simplesmente colocasse um console.log() igual ao professor mostrou, não teria problema nenhum e o comportamento na saida do terminal seria identica ao do professor.

No entanto, quando em tento utilizar o template string, a saida já não é a que eu esperava. Veja o código abaixo:

const dados = require("./exemploJSON.json");

console.log(`dados em JSON: ${dados}`);
console.log();

const jsonEmString = JSON.stringify(dados);

console.log(`JSON transformado em string: ${jsonEmString}`);
console.log();

const stringEmJSON = JSON.parse(jsonEmString);

console.log(`string transformado em JSON: ${stringEmJSON}`);
console.log();

O resultado da saída foi a seguinte:

dados em JSON: [object Object]

JSON transformado em string: {"nome":"Joao","email":"joao@firma.com","telefone":["11223344","11922334453"],"endereco":{"rua":"R. Joseph Climber","numero":202,"apartamento":true,"complemento":"ap 934","Alçapão":"Teste alçapão"}}

string transformado em JSON: [object Object]

Com exceção do JSON transformado em string, os outros não retornaram o resultado esperado. Lembrando que isso só acontece com template string.

Poderiam me ajudar a entender o porque isso acontece só com template string?

Desde já muito obrigado.

1 resposta

Oi, Rodrigo.

Ao utilizar o template string, o que você está recebendo como saída na tela é a representação textual da variável, pois é esse o comportamento do template string. Ao utilizar o JSON.stringify, você está transformando o objeto JSON em uma string formatada, que é exibida na tela. Ao utilizar o JSON.parse, você está convertendo a string formatada, que foi exibida na tela, novamente para um objeto, por isso a saída é [object Object].

Bons estudos :D