0. Fundamentos Conceptuales
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
Fundamentos teóricos y matemáticos del formato JSON
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
JSON se basa en dos estructuras matemáticas fundamentales:
Teorema de Completitud: JSON puede representar cualquier estructura de datos jerárquica finita mediante anidamiento recursivo de estas dos estructuras.
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
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 |
| 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
Teorema: Todo documento JSON válido puede ser parseado en tiempo lineal mediante:
Corolario: No existe JSON ambiguo sintácticamente cuando se sigue la gramática oficial
// Vulnerabilidad teórica
const data = `{"attack": ${userInput}}`;
const obj = {};
obj.self = obj; // No serializable a JSON
sanitize(x) = { x ∈ String → escape(x) | x }
type User = {
id: string;
name: string;
}
// Corresponde a JSON Schema
La eficiencia de JSON como formato se puede medir mediante:
H(X) = -Σ P(x) log₂ P(x)
Donde:
Límite teórico: JSON minificado tiene redundancia del ~15-20% frente a formatos binarios
Técnicas avanzadas:
Propuesta teórica para incluir:
Problema: Rompe la serialización pura
Investigación sobre:
Estas extensiones contradicen el principio KISS (Keep It Simple, Stupid) de JSON
Enunciado: JSON puede representar cualquier estructura de datos finita y jerárquica
Demostración:
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