Guía defensiva
¿Cómo analizar logs JSON con Python sin asumir que cada línea es válida?
Python puede decodificar JSON y ayudarte a revisar campos de logs de prueba. El paso defensivo clave es distinguir entre un dato ausente, un formato inválido y una señal que aún necesita contexto.
Define el contrato del registro
Antes de escribir código, describe una línea esperada. Por ejemplo: {"hora": "2030-05-14T08:21:00Z", "servicio": "api.example.com", "resultado": "denegado"}. Indica qué campos son obligatorios, qué valores son esperados y qué harás cuando falten. Así el programa no convierte una ausencia silenciosa en una respuesta falsa.
JSON representa datos estructurados, pero el decodificador no conoce el significado de tus campos. Que una línea sea JSON válido no demuestra que tenga hora, servicio ni resultado útiles. Verifica el tipo y la presencia de cada dato que guíe una decisión.
Maneja los errores como parte del resultado
La biblioteca estándar json ofrece json.loads para decodificar texto y JSONDecodeError cuando el documento no cumple la sintaxis esperada. Captura ese error por línea, registra que falló y continúa con las demás entradas si ese es el comportamiento definido para tu ejercicio. No elimines la línea ni inventes valores para que el resumen se vea completo.
Un reporte debe separar registros procesados, registros inválidos y campos faltantes. Decir que hubo dos resultados denegados sólo es defendible si aclaras que una línea no se pudo interpretar y no fue clasificada.
Evita aceptar estructuras enormes o profundamente anidadas sin límites cuando el origen no está controlado. Para aprender, fija tamaño de archivo y número de líneas en tus datos de ejemplo.
Resume sin saltar a una atribución
Agrupa por un campo que tenga sentido para la pregunta, como servicio y resultado, y conserva el intervalo temporal observado. Un conteo ayuda a priorizar la revisión, pero no identifica por sí mismo una causa ni una persona responsable. Relaciona cualquier interpretación con otra fuente autorizada antes de abrir un incidente.
Una salida defensiva puede decir: en el archivo de práctica se leyeron ocho líneas, una fue inválida y tres contienen resultado denegado. Esa frase permite revisar el cálculo, nombra su límite y deja visible lo que el programa no supo procesar.