Entradas válidas con significados diferentes
Un documento JSON puede ser un objeto, una matriz o un valor simple. null es válido aunque el contrato exija un objeto. Algunos números superan la precisión entera de JavaScript y los nombres repetidos no se interpretan igual en todos los analizadores.
| Entrada de demostración | Lectura sintáctica | Control pendiente |
|---|---|---|
| {"ok":true} | Válida. | ¿El valor cumple el contrato? |
| {"ok":true,} | Inválida: coma final. | Gestionar el error explícitamente. |
| null | Válida. | ¿El contrato permite null? |
| {"id":9007199254740993} | Número válido, riesgo de precisión en JavaScript. | Prever una cadena para este identificador. |
| {"a":1,"a":2} | Nombres repetidos: interpretación no portable. | Definir y aplicar una política de rechazo. |
Controlar cada etapa de recepción
- Use un analizador mantenido, nunca eval. Revise estado HTTP, tipo de contenido, límites de tamaño y tratamiento explícito de cuerpos ausentes o malformados.
- Valide después el contrato: tipo raíz, campos obligatorios, valores permitidos y diferencia entre ausencia, null y cero. Conserve identificadores largos como cadenas si así lo especifica el contrato.
- Fije límites de profundidad y recursos, política de nombres repetidos y gestión de errores. No inserte cadenas recibidas en HTML o consultas sin protección adecuada.
Mantener errores útiles sin exponer datos
Pruebe respuestas parciales, cambios de versión y Unicode. Registre contexto mínimo, no secretos ni cuerpos completos. Un fallo de decodificación no debe convertirse en resultado vacío presentado como éxito ni detener silenciosamente todo el proceso.
Fuentes primarias
Registre los errores de la API JSON sin filtrar la información.
El cuerpo de un JSON puede contener identificadores, secretos o datos personales. El diagnóstico suele requerir el tipo de evento, la ruta, el resultado, el identificador de correlación y un detalle de fallo no sensible, en lugar de la información completa.
- Clasifique los campos y oculte los que no sean necesarios para el diagnóstico.
- Pruebe los fallos de análisis y esquema con valores sintéticos.
- Compruebe que los registros de errores y las exportaciones no copien cargas útiles completas.
Fuente primaria: ACSC and partners — Event logging and threat detection. Método relacionado: consultar la guía práctica.
JSON personalizado y claves de caché.
Punto de revisión adicional: JSON personalizado y claves de caché. Una política a nivel de representación y pruebas que detecten fugas entre cuentas y contenido obsoleto tras los cambios.
- Elija la retención: RFC 9111 distingue directivas: `no-cache` requiere validación antes de la reutilización, `no-store` prohíbe el almacenamiento HTTP correspondiente y `unqualified private` excluye el almacenamiento compartido. Ninguna por sí sola garantiza la confidencialidad del sistema.
- Inspeccione las claves: Compruebe el método, la URI y las dimensiones que modifican una representación. La variación afecta a los campos de la solicitud; no es autorización. Busque el idioma omitido, la negociación de formato y el contexto de la cuenta en las capas de la aplicación.
Fuente primaria: IETF — RFC 9111, HTTP Caching. Método relacionado: consultar la guía práctica.
Validar también la continuación
El análisis de respuestas debe preservar identificadores y continuación. JSON legible puede mostrar páginas cortas o tokens inesperados; consulte el contrato antes de dar la lectura por terminada.
- Probar páginas cortas y campos de final ausentes.
- Conservar tipos y valores de identificadores sin alterarlos.
- Detectar tokens repetidos, truncamiento y recuperación del lote.
Caso de aceptación reproducible
Ejemplo ficticio: estos datos no describen clientes ni resultados observados.
Ver datos del caso
{
"page_1_ids": [
"A",
"B"
],
"page_2_ids": [
"B",
"C"
],
"next_cursor": "c2",
"empty_page_has_next_cursor": true
}Decisión esperada
B se repite. Compruebe identidades y siga el cursor incluso después de una página vacía.
Procedimiento de verificación
- Fije filtros, orden estable e identidad.
- Pruebe duplicado y página vacía con cursor.
- Conserve identificadores y condición real de fin.
Fuente primaria: Google AIP-158 — Pagination. Método relacionado: consultar la guía práctica.
