Trabalhando com JSON em JavaScript: parsing e serialização para iniciantes

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

Introdução ao JSON e JavaScript

\n

JSON (JavaScript Object Notation) é um formato leve de troca de dados que se tornou padrão para a comunicação entre cliente e servidor em aplicações web. Graças à sua simplicidade e legibilidade, o JSON é usado em toda parte: desde arquivos de configuração até requisições de API. Neste artigo, vamos entender como trabalhar com JSON no ambiente Node.js, dominar o parsing (conversão de string em objeto) e a serialização (conversão de objeto em string). O material é voltado para desenvolvedores iniciantes que já conhecem os fundamentos do JavaScript.

\n\n

O que é JSON e para que serve?

\n

JSON é um formato de texto baseado na sintaxe de objetos JavaScript. No entanto, JSON é apenas uma string que pode ser transmitida pela rede ou armazenada em um arquivo. Os principais tipos de dados em JSON são:

\n
    \n
  • Strings (entre aspas duplas)
  • \n
  • Números (inteiros e de ponto flutuante)
  • \n
  • Valores booleanos (true/false)
  • \n
  • null
  • \n
  • Arrays
  • \n
  • Objetos (chaves entre aspas duplas)
  • \n
\n

Exemplo de uma string JSON válida:

\n
{\n  "name": "Ana",\n  "age": 28,\n  "isStudent": false,\n  "skills": ["JavaScript", "Node.js"],\n  "address": null\n}
\n

Ao contrário de um objeto JavaScript comum, o JSON exige uma sintaxe rigorosa: todas as chaves e valores de string devem estar entre aspas duplas, e comentários não são permitidos.

\n\n

Parsing de JSON: JSON.parse()

\n

Para converter uma string JSON em um objeto JavaScript, usa-se o método JSON.parse(). Isso é necessário quando você recebe dados do servidor, lê um arquivo ou processa a entrada do usuário.

\n\n

Exemplo básico de parsing

\n
const jsonString = '{"name": "João", "age": 30}';\nconst user = JSON.parse(jsonString);\nconsole.log(user.name); // João\nconsole.log(user.age);  // 30
\n\n

Parsing de array

\n
const jsonArray = '[1, 2, "três", true]';\nconst arr = JSON.parse(jsonArray);\nconsole.log(arr[2]); // três
\n\n

Tratamento de erros de parsing

\n

Um JSON inválido lançará uma exceção SyntaxError. Sempre use try...catch ao trabalhar com dados não confiáveis:

\n
try {\n  const invalid = '{"name": "Erro}';\n  const result = JSON.parse(invalid);\n} catch (error) {\n  console.error('Erro de parsing:', error.message);\n}
\n

Você também pode passar um segundo argumento — uma função reviver, que permite transformar valores durante o parsing:

\n
const json = '{"date": "2024-01-15", "count": "42"}';\nconst obj = JSON.parse(json, (key, value) => {\n  if (key === 'date') return new Date(value);\n  if (key === 'count') return Number(value);\n  return value;\n});\nconsole.log(obj.date.getFullYear()); // 2024\nconsole.log(typeof obj.count);       // number
\n\n

Serialização JSON: JSON.stringify()

\n

O processo inverso — converter um objeto JavaScript em uma string JSON — é feito com JSON.stringify(). Isso é necessário para enviar dados ao servidor, salvar em um arquivo ou fazer logging.

\n\n

Exemplo simples de serialização

\n
const user = {\n  name: 'Maria',\n  age: 25,\n  isAdmin: true\n};\nconst json = JSON.stringify(user);\nconsole.log(json);\n// {"name":"Maria","age":25,"isAdmin":true}
\n\n

Formatação da saída

\n

O método aceita três parâmetros: o valor, uma função de substituição (ou array de campos) e a quantidade de espaços para indentação:

\n
const data = {\n  id: 1,\n  title: 'Artigo',\n  tags: ['js', 'json']\n};\n// Com indentação de 2 espaços\nconst prettyJson = JSON.stringify(data, null, 2);\nconsole.log(prettyJson);\n/* Saída:\n{\n  "id": 1,\n  "title": "Artigo",\n  "tags": [\n    "js",\n    "json"\n  ]\n}\n*/
\n\n

Filtragem de campos

\n

O segundo parâmetro pode ser um array de chaves que devem ser incluídas no resultado:

\n
const user = {\n  name: 'Pedro',\n  password: 'secret12                

Blogs

Book Recommendations