JSON (JavaScript Object Notation) es un formato de texto plano ligero diseñado para el intercambio de datos entre servidores y aplicaciones web. Basado en una estructura de pares clave-valor, es completamente independiente del lenguaje de programación utilizado, siendo fácilmente legible tanto por seres humanos como por computadoras.
Los archivos de datos guardados bajo este estándar deben portar obligatoriamente la extensión corporativa
.json.
Antes de la adopción masiva de JSON, la industria dependía de lenguajes de marcado complejos como XML (eXtensible Markup Language), el cual requería una gran sobrecarga de etiquetas, volviendo las transferencias de red lentas y difíciles de parsear.
<persona><nombre>Juan</nombre><edad>30</edad><profesion>Ingeniero</profesion></persona>
{"nombre": "Juan", "edad": 30, "profesion": "Ingeniero"}
JSON permite anidar estructuras complejas y soporta de forma nativa los siguientes tipos de datos:
"").true / false).[]).{}).
{
"nombre": "Juan",
"edad": 30,
"profesion": "Ingeniero",
"casado": false,
"hijos": ["Ana", "Luis"],
"direccion": {
"calle": "Calle Falsa 123",
"ciudad": "Springfield",
"pais": "USA"
},
"telefonos": [
{
"tipo": "casa",
"numero": "555-1234"
},
{
"tipo": "movil",
"numero": "555-5678"
}
]
}
Para garantizar que un archivo JSON recibido en una API posea los campos requeridos, los tipos de datos correctos y rangos válidos antes de procesarlos, se utiliza un contrato denominado JSON Schema.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"nombre": {
"type": "string"
},
"edad": {
"type": "integer"
},
"activo": {
"type": "boolean"
},
"anio_registro": {
"type": "integer",
"minimum": 1900,
"maximum": 2026
}
},
"required": ["nombre", "edad", "activo"]
}
El siguiente script en Python demuestra cómo automatizar la validación de un documento de datos contra un esquema
predefinido utilizando la librería profesional jsonschema:
import jsonschema
from jsonschema import validate
# 1. El documento de datos real (Payload recibido)
documento_json = {
"nombre": "Juan",
"edad": 30,
"activo": True
}
# 2. El contrato estructural formal (JSON Schema)
esquema_json = {
"type": "object",
"properties": {
"nombre": {"type": "string"},
"edad": {"type": "integer"},
"activo": {"type": "boolean"}
},
"required": ["nombre", "edad", "activo"]
}
# 3. Bloque de control y validación de excepciones
try:
validate(instance=documento_json, schema=esquema_json)
print("Métrica Exitosa: El documento JSON es completamente válido según el contrato del esquema.")
except jsonschema.exceptions.ValidationError as error_validacion:
print("Falla Estructural Detectada. Detalles de la anomalía:")
print(error_validacion.message)