Introdução ao JSON e seu papel no JavaScript moderno
JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou o padrão de facto para transmitir informações entre cliente e servidor. Apesar do nome conter "JavaScript", o JSON é um formato independente de linguagem, mas sua sintaxe é muito próxima à sintaxe de objetos JavaScript. No ambiente Node.js, trabalhar com JSON é uma tarefa diária para qualquer desenvolvedor backend: desde a leitura de arquivos de configuração até o processamento de requisições de API.
Neste artigo, vamos detalhar dois métodos principais para trabalhar com JSON em JavaScript: JSON.parse() para parsing (converter string em objeto) e JSON.stringify() para serialização (converter objeto em string). Você aprenderá não apenas o básico, mas também técnicas avançadas que ajudarão a escrever código mais confiável e performático em Node.js.
JSON.parse(): Convertendo string em objeto JavaScript
O método JSON.parse() recebe uma string no formato JSON e retorna o objeto JavaScript correspondente. Esta é a operação principal ao receber dados de uma API ou ler arquivos JSON.
Sintaxe básica e exemplo simples
A sintaxe do método é extremamente simples:
JSON.parse(text[, reviver])Onde text é a string JSON, e o parâmetro opcional reviver é uma função que pode transformar os valores antes do retorno.
Vamos ver um exemplo básico:
const jsonString = '{"name": "Node.js", "version": 18, "features": ["async", "await"]}';const parsedObject = JSON.parse(jsonString);
console.log(parsedObject.name); // "Node.js"console.log(parsedObject.version); // 18console.log(parsedObject.features); // ["async", "await"]Tratamento de erros durante o parsing
Um dos erros mais comuns é tentar fazer parse de um JSON inválido. Em Node.js, isso resultará no lançamento de uma exceção SyntaxError. Sempre use a estrutura try...catch para um parsing seguro:
const invalidJson = '{"name": "Node.js", version: 18}'; // Erro: chave version sem aspas
try { const data = JSON.parse(invalidJson); console.log(data);} catch (error) { if (error instanceof SyntaxError) { console.error('Erro de parsing JSON:', error.message); // Saída: Erro de parsing JSON: Expected property name in JSON at position 27 }}Usando o parâmetro reviver para transformação de dados
O parâmetro reviver permite modificar os valores durante o parsing. Isso é especialmente útil para converter strings de data em objetos Date:
const jsonWithDate = '{"event": "Conferência", "date": "2024-12-15T10:00:00Z"}';
const result = JSON.parse(jsonWithDate, (key, value) => { if (key === 'date') { return new Date(value); } return value;});
console.log(result.date instanceof Date); // trueconsole.log(result.date.toLocaleDateString('pt-BR')); // 15/12/2024JSON.stringify(): Convertendo objeto em string JSON
O método JSON.stringify() realiza a operação inversa — converte um objeto JavaScript em uma string JSON. Isso é necessário ao enviar dados para o servidor ou salvar o estado em um arquivo.
Sintaxe e exemplos básicos
A sintaxe completa do método inclui três parâmetros:
JSON.stringify(value[, replacer[, space]])- value — objeto para serialização (obrigatório)
- replacer — função ou array para filtrar propriedades (opcional)
- space — número de espaços para formatação (opcional)
Exemplo simples de serialização:
const user = { id: 101, name: "Alexey",