Processamento de 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

JSON em Node.js: Guia Completo para Processamento de Dados



JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou o padrão de facto para APIs web, arquivos de configuração e armazenamento de informações estruturadas. No ambiente Node.js, trabalhar com JSON é parte integrante de praticamente qualquer aplicação. Neste artigo, abordaremos detalhadamente todos os aspectos do processamento de JSON: desde o parsing básico até o processamento avançado com streams.



1. Fundamentos: Parsing e Serialização



No Node.js, dois métodos globais são usados para trabalhar com JSON: JSON.parse() e JSON.stringify(). Eles estão disponíveis sem a necessidade de importar módulos adicionais.



JSON.parse() — Convertendo String em Objeto

O método JSON.parse() recebe uma string JSON e retorna o objeto JavaScript correspondente. É importante que a string seja estritamente um JSON válido.



const jsonString = '{"name": "Alice", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);console.log(user.name); // Aliceconsole.log(typeof user); // object


O método também aceita um segundo argumento — uma função "reviver" que permite transformar valores durante o processo de parsing:



const data = '{"date": "2025-01-15T10:00:00Z"}';const parsed = JSON.parse(data, (key, value) => {    if (key === 'date') return new Date(value);    return value;});console.log(parsed.date instanceof Date); // true


JSON.stringify() — Convertendo Objeto em String

O método JSON.stringify() faz a operação inversa — transforma um objeto JavaScript em uma string JSON.



const user = {    name: 'Bob',    age: 25,    hobbies: ['coding', 'reading']};const json = JSON.stringify(user);console.log(json); // {"name":"Bob","age":25,"hobbies":["coding","reading"]}


O método aceita três argumentos: o valor, uma função de substituição (replacer) e o número de espaços para formatação (space):



const obj = { a: 1, b: 2, c: 3 };// Saída formatada com indentaçãoconsole.log(JSON.stringify(obj, null, 2));// {//   "a": 1,//   "b": 2,//   "c": 3// }

// Filtragem de chaves usando replacerconst filtered = JSON.stringify(obj, ['a', 'c'], 2);console.log(filtered);// {// "a": 1,// "c": 3// }


2. Leitura e Escrita de Arquivos JSON



Em aplicações reais, dados JSON são frequentemente armazenados em arquivos. Para trabalhar com o sistema de arquivos, utiliza-se o módulo embutido fs.



Leitura e Escrita Síncronas

const fs = require('fs');const path = require('path');

const filePath = path.join(__dirname, 'config.json');

// Leituraconst rawData = fs.readFileSync(filePath, 'utf-8');const config = JSON.parse(rawData);console.log(config.port);

// Escritaconst newConfig = { port: 3000, host: 'localhost' };fs.writeFileSync(filePath, JSON.stringify(newConfig, null, 2));


Leitura e Escrita Assíncronas (Método Recomendado)

const fs = require('fs').promises;

async function readConfig() { try { const data = await fs.readFile('config.json', 'utf-8'); return JSON.parse(data); } catch (err) { console.error('Erro ao ler o arquivo:', err); throw err; }}

async function writeConfig(config) { await fs.writeFile('config.json', JSON.stringify(config, null, 2));}

// Uso(async () => { const config = await readConfig(); config.port = 4000; await writeConfig(config);})();


3. Validação de JSON



Às vezes é necessário verificar se uma string é um JSON válido sem lançar uma exceção. A maneira mais confiável é envolver JSON.parse() em um bloco try-catch:




                
    
    

Recommendations