Trabalhando com JSON em JavaScript: parsing e serialização na prática
JSON (JavaScript Object Notation) é um formato leve de troca de dados, amplamente utilizado em aplicações web modernas. Em JavaScript, o trabalho com JSON é integrado ao nível da linguagem, tornando-o uma ferramenta ideal para troca de dados entre cliente e servidor, bem como para armazenamento de configurações. Neste artigo, vamos abordar como fazer parsing e serializar JSON no ambiente Node.js, explorar exemplos práticos e melhores práticas.
O que é JSON e para que serve?
JSON é um formato textual baseado na sintaxe de objetos JavaScript. Ele suporta os seguintes tipos de dados:
- Strings (entre aspas duplas)
- Números (inteiros e de ponto flutuante)
- Valores booleanos (true/false)
- Arrays
- Objetos
- null
JSON é usado em toda parte: desde requisições de API até arquivos de configuração (por exemplo, package.json). No Node.js, JSON é o formato principal para troca de dados entre microsserviços.
Parsing de JSON: transformando string em objeto
Para converter uma string JSON em um objeto JavaScript, utiliza-se o método JSON.parse(). Vejamos um exemplo básico:
const jsonString = '{"name": "Ana", "age": 30, "isStudent": false}';const user = JSON.parse(jsonString);
console.log(user.name); // "Ana"console.log(user.age); // 30console.log(user.isStudent); // falseImportante: A string JSON deve estar estritamente formatada. Todas as chaves e valores de string devem estar entre aspas duplas. Aspas simples ou trailing commas causarão erro.
Tratamento de erros no parsing
Ao trabalhar com dados externos (de arquivos, APIs), há sempre o risco de receber um JSON inválido. Use try...catch:
const fs = require('fs');
try { const data = fs.readFileSync('data.json', 'utf8'); const parsed = JSON.parse(data); console.log('Parseado com sucesso:', parsed);} catch (error) { if (error instanceof SyntaxError) { console.error('Erro de sintaxe JSON:', error.message); } else { console.error('Erro ao ler arquivo:', error.message); }}Parsing com função reviver
O método JSON.parse() aceita um segundo argumento — uma função que pode transformar os valores. Isso é útil, por exemplo, para converter strings de data em objetos Date:
const json = '{"name": "João", "birthDate": "1990-05-15T00:00:00Z"}';const user = JSON.parse(json, (key, value) => { if (key === 'birthDate') { return new Date(value); } return value;});
console.log(user.birthDate instanceof Date); // trueconsole.log(user.birthDate.getFullYear()); // 1990Serialização JSON: transformando objeto em string
O processo inverso — converter um objeto JavaScript em uma string JSON — é feito com JSON.stringify().
const user = { name: 'Maria', age: 25, skills: ['JavaScript', 'Node.js', 'Python'], isActive: true};
const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Maria","age":25,"skills":["JavaScript","Node.js","Python"],"isActive":true}Formatação da saída
Para legibilidade, você pode adicionar indentação:
const prettyJson = JSON.stringify(user, null, 2);console.log(prettyJson);/*{ "name": "Maria", "age": 25, "skills": [ "JavaScript", "Node.js", "Python" ], "isActive": true}*/Filtragem e substituição de valores
O segundo argumento de JSON.stringify() pode ser um array de chaves (para filtragem) ou uma função de substituição:
Blogs
Book Recommendations
Leia também
Salários de desenvolvedores C++ na Rússia: panorama do mercado 2024
Por que o JavaScript se tornou o rei da web: uma história de sucesso
Trabalhando com WebAssembly e JavaScript no Node.js: guia avançado
JavaScript 2025: por onde começar a aprender na prática
Public, Private e Protected em PHP: guia completo de encapsulamento