Lección 11
Generar texto JSON desde valores
Serialización, orden de claves y mantener salida estable para tests y APIs.
La generación (serialización) recorre tus valores en memoria y escribe texto JSON — para respuestas HTTP, exportaciones de archivos o fixtures de test. Es lo inverso del parseo, con sus propias decisiones de diseño.
El comportamiento por defecto varía
La mayoría de serializadores:
- Omiten propiedades
undefined(JavaScript) o requieren manejo explícito de null - Escapan cadenas automáticamente
- Escriben números en forma decimal
Ejemplo conceptual:
{"status": "ok", "count": 3}
desde un objeto con campos status y count.
Orden de claves y salida estable
El orden de claves en objetos no es semánticamente significativo en JSON, pero el orden de bytes serializado sí importa para:
- Diffs de Git y snapshot tests
- Firmas criptográficas sobre bytes crudos
- Claves de caché construidas desde JSON canónico
A veces los equipos ordenan claves alfabéticamente antes de generar texto para que dos objetos lógicamente iguales produzcan cadenas idénticas.
Generación pretty frente a compacta
| Modo | Usar cuando |
|---|---|
| Pretty (indentado) | Revisión humana, docs, depuración |
| Compacto | Transferencia en red, importa el tamaño de almacenamiento |
Los mismos datos pueden ser válidos en ambas formas — elige según la audiencia, no la corrección.
Pensamiento de ida y vuelta
Flujo ideal: valores → texto → parseo → valores iguales. Números de punto flotante, enteros grandes o tipos personalizados (fechas, BigInt) pueden no hacer round-trip perfecto salvo que definas convenciones (cadenas de fecha ISO, decimales codificados como string).
Documenta esas convenciones en especificaciones de API para que clientes y servidores coincidan.