Validando e Parseando JSON com Segurança usando Try/Catch em JavaScript

Validando e Parseando JSON com Segurança usando Try/Catch em JavaScript

Manipular strings JSON de fontes externas (como APIs ou localStorage) pode interromper a execução do JavaScript se o formato retornado for inválido. Este snippet demonstra como encapsular o JSON.parse em um bloco try...catch, garantindo um parse seguro que trata exceções sem derrubar a aplicação.

JavaScript

/**
 * Realiza o parse seguro de uma string JSON retornando um valor padrão em caso de erro
 * @param {string} jsonString - Texto em formato JSON a ser validado
 * @param {any} fallbackValue - Valor de retorno caso o JSON seja inválido
 * @returns {any} Objeto/Valor convertido ou o fallbackValue
 */
function safeJsonParse(jsonString, fallbackValue = null) {
  try {
    // Tenta converter a string para objeto/valor JS
    return JSON.parse(jsonString);
  } catch (error) {
    // Captura o SyntaxError sem interromper o fluxo da aplicação
    console.warn('Falha ao parsear JSON:', error.message);
    return fallbackValue;
  }
}

// Exemplos práticos de uso:

// 1. JSON Válido
const dadosValidos = '{"usuario": "Ana", "ativo": true}';
const usuario = safeJsonParse(dadosValidos, {});
console.log('Resultado 1 (Válido):', usuario.usuario); // "Ana"

// 2. JSON Inválido (Sintaxe incorreta - aspas simples ou vírgula sobrando)
const dadosInvalidos = '{ usuario: "Ana", }';
const fallback = safeJsonParse(dadosInvalidos, { erro: true });
console.log('Resultado 2 (Inválido):', fallback); // { erro: true }

Pontos-chave

  • Prevenção de SyntaxError: A função nativa JSON.parse() lança uma exceção síncrona do tipo SyntaxError se a string contiver erros de formatação, o que paralisa o script caso não seja tratado.
  • Valor de Contingência (Fallback): O parâmetro fallbackValue permite definir um retorno padrão seguro (como null, {} ou []), evitando erros secundários de TypeError: Cannot read properties of undefined no restante do código.
  • Formatação Estrita do JSON: Lembre-se de que o padrão JSON exige aspas duplas (") em chaves e valores do tipo texto; aspas simples ou vírgulas no final de objetos causam falha no parse.
  • Performance: O bloco try...catch possui um custo computacional insignificante para casos de uso comuns, tornando essa abordagem ideal para tratar respostas não confiáveis de APIs externas ou entradas de usuário.

Thales de Oliveira Gomes

Thales de Oliveira Gomes é gestor de Tecnologia da Informação, especialista em infraestrutura de redes, computação em nuvem e operações de TI hospitalar, com mais de 18 anos de experiência na área. Graduado em Gestão de TI e pós-graduado em Engenharia de Redes e Telecomunicações, Cloud Computing, Redes de Computadores e Gestão Hospitalar, construiu uma trajetória sólida liderando projetos de alta complexidade, como a implementação e migração para nuvem de sistemas ERP de grande porte. Sua atuação no setor o levou a ser indicado ao prêmio IT Leaders Brasil na categoria Rising Leaders. Além da carreira corporativa e da paixão por tecnologia, Thales é autor independente com mais de 70 obras publicadas sobre redes, segurança da informação, Linux e física, além de criador de conteúdo no blog Vetor Tech e na plataforma CiberDicas. No universo das artes e do entretenimento, atua como produtor de música eletrônica sob o projeto Yknex, cria ilustrações digitais e compartilha walkthroughs de games no YouTube.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *