Processamento JSON em JavaScript (Node.js): guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com JSON no Node.js: do básico às técnicas avançadas



JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou o padrão de facto para APIs web e arquivos de configuração. No Node.js, o trabalho com JSON é integrado ao núcleo, tornando seu processamento rápido e conveniente. Neste artigo, abordaremos todos os aspectos do trabalho com JSON: desde o parsing básico até o processamento de arquivos grandes usando streams.



Fundamentos: JSON.parse() e JSON.stringify()



Dois métodos globais — JSON.parse() e JSON.stringify() — são a base de todo o trabalho com JSON em JavaScript.



JSON.parse() — convertendo string em objeto



O método JSON.parse() recebe uma string no formato JSON e retorna o objeto JavaScript correspondente. Se a string contiver um erro de sintaxe, uma exceção SyntaxError será lançada.



const jsonString = '{"name": "Ana", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);

console.log(user.name); // "Ana"console.log(user.age); // 30


O segundo parâmetro opcional é uma função reviver, que permite transformar valores durante o parsing:



const jsonString = '{"date": "2024-01-15T10:30:00Z", "count": "42"}';const obj = JSON.parse(jsonString, (key, value) => {    if (key === 'date') return new Date(value);    if (key === 'count') return parseInt(value, 10);    return value;});

console.log(obj.date instanceof Date); // trueconsole.log(typeof obj.count); // "number"


JSON.stringify() — convertendo objeto em string



O método JSON.stringify() faz o oposto — transforma um objeto JavaScript em uma string JSON. Ele aceita três parâmetros: o valor, uma função substituta (ou array de chaves) e o número de espaços para formatação.



const user = {    name: "João",    age: 25,    roles: ["admin", "editor"],    metadata: null};

// Uso básicoconst json = JSON.stringify(user);console.log(json);// {"name":"João","age":25,"roles":["admin","editor"],"metadata":null}

// Com formataçãoconst prettyJson = JSON.stringify(user, null, 2);console.log(prettyJson);/*{ "name": "João", "age": 25, "roles": ["admin", "editor"], "metadata": null}*/


A função substituta permite filtrar ou transformar valores:



const user = { name: "Pedro", password: "secret123", age: 28 };

const safeJson = JSON.stringify(user, (key, value) => { if (key === 'password') return undefined; // remove a senha return value;});

console.log(safeJson); // {"name":"Pedro","age":28}


Leitura e escrita de arquivos JSON no Node.js



Em projetos reais, dados JSON são frequentemente armazenados em arquivos. O Node.js fornece o módulo fs (file system) para trabalhar com o sistema de arquivos.



Lendo JSON de um arquivo



const fs = require('fs');

// Leitura síncronatry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port); // 3000} catch (err) { console.error('Erro ao ler arquivo:', err.message);}

// Leitura assíncrona (recomendada)fs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('Erro:', err); return; } const config = JSON.parse(data); console.log(config);});


Escrevendo JSON em um arquivo



const fs = require('fs');

const settings = { theme: "dark", language: "pt", notifications: true};

// Escrita com formataçãofs.writeFileSync('settings.json', JSON.stringify(settings, null, 2), 'utf8');console.log('Arquivo settings.json criado');

// Escrita assíncronafs.writeFile('settings.json', JSON.stringify(settings), (err) => { if (err) throw err;

Recommendations