Ler JSON: separar sintaxe, contrato e confiança

Em resumo

Um analisador transforma texto JSON em valores. Não demonstra validade de negócio, confiança no emissor ou permissão para utilizar dados.

Mapa mundial de redes numa sala de briefing vazia Ilustração · cena fictícia
Neste artigo

Entradas válidas com significados diferentes

Um documento JSON pode ser objeto, matriz ou valor simples. null é válido mesmo quando o contrato exige um objeto. Alguns números ultrapassam a precisão inteira de JavaScript; nomes repetidos não são interpretados uniformemente pelos analisadores.

Entrada de demonstraçãoLeitura sintáticaVerificação restante
{"ok":true}Válida.O valor cumpre o contrato?
{"ok":true,}Inválida: vírgula final.Tratar o erro explicitamente.
nullVálida.O contrato permite null?
{"id":9007199254740993}Número válido, risco de precisão em JavaScript.Prever uma cadeia para este identificador.
{"a":1,"a":2}Nomes repetidos: interpretação não portável.Definir e aplicar uma política de rejeição.

Controlar cada etapa de receção

  • Use um analisador mantido, nunca eval. Verifique estado HTTP, tipo de conteúdo, limites de tamanho e tratamento explícito de corpos ausentes ou malformados.
  • Valide depois o contrato: tipo raiz, campos obrigatórios, valores permitidos e diferença entre ausência, null e zero. Preserve identificadores longos como cadeias se o contrato o definir.
  • Defina limites de profundidade e recursos, política de nomes repetidos e gestão de erros. Não insira cadeias recebidas em HTML ou consultas sem proteção adequada.

Manter erros úteis sem expor dados

Teste respostas parciais, alterações de versão e Unicode. Registe contexto mínimo em vez de segredos ou corpos completos. Uma falha de descodificação não deve tornar-se resultado vazio apresentado como sucesso nem interromper silenciosamente toda a cadeia.

Fontes primárias

Registre erros da API JSON sem vazar payloads.

Um corpo JSON pode conter identificadores, segredos ou dados pessoais. O diagnóstico geralmente precisa do tipo de evento, rota, resultado, identificador de correlação e um detalhe de falha não sensível, em vez do payload completo.

  • Classifique os campos e oculte aqueles que não são necessários para o diagnóstico.
  • Teste falhas de análise e esquema com valores sintéticos.
  • Verificar se os logs de erros e as exportações não copiam payloads completos.

Fonte primária: ACSC and partners — Event logging and threat detection. Método relacionado: consultar o guia prático.

JSON personalizado e chaves de cache

Ponto de revisão adicional: JSON personalizado e chaves de cache. Uma política em nível de representação e testes que buscam vazamento entre contas e conteúdo obsoleto após alterações.

  • Escolher retenção: A RFC 9111 distingue diretivas: no-cache requer validação antes da reutilização, no-store proíbe o armazenamento HTTP relevante e private não qualificado exclui o armazenamento compartilhado. Nenhum, por si só, garante a confidencialidade do sistema.
  • Inspecionar chaves: Verificar método, URI e dimensões que alteram uma representação. A variável diz respeito aos campos de solicitação; não se trata de autorização. Buscar idioma omitido, negociação de formato e contexto da conta nas camadas de aplicação.

Fonte primária: IETF — RFC 9111, HTTP Caching. Método relacionado: consultar o guia prático.

Separar parsing e fim da leitura

JSON sintaticamente válido pode descrever página incompleta, erro operacional ou continuação. O parser não decide sozinho que a exportação terminou.

  • Validar estrutura e metadados de continuação.
  • Tratar tokens ausentes segundo contrato.
  • Detetar tokens repetidos e páginas sem progresso.

Caso de aceitação reproduzível

Exemplo fictício: estes dados não descrevem clientes nem resultados observados.

Ver dados do caso
{
    "page_1_ids": [
        "A",
        "B"
    ],
    "page_2_ids": [
        "B",
        "C"
    ],
    "next_cursor": "c2",
    "empty_page_has_next_cursor": true
}

Decisão esperada

B repete-se. Verifique identidades e siga o cursor mesmo após uma página vazia.

Procedimento de verificação

  1. Fixe filtros, ordem estável e identidade.
  2. Teste duplicado e página vazia com cursor.
  3. Conserve identificadores e condição real de fim.

Google AIP-158 — Pagination

Fonte primária: Google AIP-158 — Pagination. Método relacionado: consultar o guia prático.