Cuarta Semana

Teoría Profunda de JSON

Fundamentos teóricos y matemáticos del formato JSON

0. Fundamentos Conceptuales

Conceptos clave

JSON es más que un formato de intercambio: es un estándar de representación de datos que sigue el paradigma de serialización y deserialización

1. Modelo Teórico de JSON

JSON se basa en dos estructuras matemáticas fundamentales:

  1. Diccionarios (Objetos): Pares clave-valor basados en teoría de conjuntos
  2. Listas ordenadas (Arrays): Secuencias indexadas

Teorema de Completitud: JSON puede representar cualquier estructura de datos jerárquica finita mediante anidamiento recursivo de estas dos estructuras.

2. Gramática Formal

Gramática BNF

La sintaxis JSON se define mediante una gramática BNF (Backus-Naur Form):

json ::= value
    value ::= object | array | string | number | "true" | "false" | "null"
    object ::= '{' [ pair (',' pair)* ] '}'
    pair ::= string ':' value
    array ::= '[' [ value (',' value)* ] ']'

Esta definición formal permite implementar parsers deterministas en cualquier lenguaje

3. Teoría de Tipos en JSON

Sistema de tipos

JSON implementa un sistema de tipos simplificado:

Tipo JSON Equivalente teórico Limitaciones
Number Número real (IEEE 754) No distingue enteros/floats
String Secuencia Unicode Codificación UTF-8 obligatoria
Boolean Álgebra booleana Solo true/false
Null Valor unitario Único valor posible
Array Lista homogénea/heterogénea Sin tipado estático
Object Diccionario/mapa Claves solo strings

4. Complejidad Computacional

Análisis de complejidad

4.1. Análisis de Operaciones Básicas

Operación Complejidad Notas
Parsing O(n) Usando autómatas finitos deterministas
Serialización O(n) Recorrido en profundidad
Búsqueda O(1) Acceso directo en objetos
Validación O(n) Depende del esquema

El anidamiento profundo puede causar desbordamiento de pila en parsers recursivos

4.2. Teorema de Parsing

Teorema: Todo documento JSON válido puede ser parseado en tiempo lineal mediante:

  1. Autómata de estados finitos
  2. Analizador descendente recursivo (RD)
  3. Analizador LR(1)

Corolario: No existe JSON ambiguo sintácticamente cuando se sigue la gramática oficial

5. Modelo de Seguridad Formal

Seguridad en JSON

5.1. Problemas Teóricos

  1. Inyección JSON: Posible cuando hay mezcla de código y datos
    // Vulnerabilidad teórica
        const data = `{"attack": ${userInput}}`;
  2. Problema de la Circularidad: JSON no soporta referencias circulares por diseño
    const obj = {};
        obj.self = obj; // No serializable a JSON

5.2. Soluciones Formales

  1. Sanitización:
    sanitize(x) = { x ∈ String → escape(x) | x }
  2. Validación mediante Esquemas:
    type User = {
          id: string;
          name: string;
        }
        // Corresponde a JSON Schema

6. Teoría de la Información

6.1. Entropía de JSON

La eficiencia de JSON como formato se puede medir mediante:

H(X) = -Σ P(x) log₂ P(x)

Donde:

  • Alta entropía: Datos impredecibles (mejor comprimir)
  • Baja entropía: Estructuras regulares (ideal para JSON)

6.2. Compresión Óptima

Límite teórico: JSON minificado tiene redundancia del ~15-20% frente a formatos binarios

Técnicas avanzadas:

  1. Compresión diferencial: Solo enviar cambios
  2. Tokens binarios: Reemplazar claves repetidas

7. Extensiones Teóricas

Extensiones propuestas

7.1. JSON Computable

Propuesta teórica para incluir:

  • Funciones λ-cálculo
  • Referencias ($ref)
  • Tipos algebraicos

Problema: Rompe la serialización pura

7.2. JSON Infinito

Investigación sobre:

  1. Streams JSON (datos infinitos)
  2. Lazy evaluation
  3. Referencias circulares controladas

Estas extensiones contradicen el principio KISS (Keep It Simple, Stupid) de JSON

8. Demostraciones Formales

Demostraciones matemáticas

8.1. Teorema de Completitud

Enunciado: JSON puede representar cualquier estructura de datos finita y jerárquica

Demostración:

  1. Base: Tipos primitivos son representables
  2. Inducción:
    • Si A y B son representables, entonces [A,B] es representable
    • Si k,v son representables, entonces {k:v} es representable

8.2. Lema de Parsing Unico

Enunciado: Todo string JSON válido tiene un único árbol de sintaxis abstracta

Demostración: Se deriva de la gramática LL(1) no ambigua

Aplicaciones Teóricas

  1. Modelado de Bases de Datos:
    • Teorema de representación de documentos
    • Isomorfismo con álgebra relacional
  2. Lógica Formal:
    • Representación de fórmulas lógicas
    • Intercambio de teoremas/proofs
  3. Teoría de Grafos:
    • Serialización de grafos acíclicos dirigidos
    • Representación de árboles n-arios