Minificar JSON
Elimina cada byte de espacio en blanco y comprueba exactamente cuánto has ahorrado.
Nada de lo que pegues sale de tu navegador. La lista de permitidos de connect-src convierte eso en una garantía del navegador, no en una promesa. Compruébalo tú mismo
Minificar elimina cada byte de espacio en blanco que un parser ignora: los saltos de línea, la indentación, el espacio después de cada dos puntos. No cambia nada más, y el resultado parseado es idéntico.
En un payload de API formateado típico eso quita entre el 10 y el 20 por ciento de los bytes. En un documento muy anidado formateado con cuatro espacios puede ser más de un tercio.
Dónde ayuda de verdad y dónde no
Minificar merece la pena para todo lo que se almacena o se transmite en volumen: respuestas de API, configuración empaquetada en un bundle, registros en una cola, filas en un almacén columnar.
Merece mucho menos la pena de lo que la gente cree sobre HTTP, porque gzip y brotli ya comprimen extremadamente bien el espacio en blanco repetido. Minificar una respuesta que ya va comprimida con gzip suele ahorrar un pequeño porcentaje, no un veinte por ciento. Donde sí sigue importando es allí donde no se aplica compresión: almacenamiento local, una columna de base de datos, el cuerpo de un mensaje con un límite duro de tamaño, o una línea de log.
No merece nada la pena en un archivo que lee una persona. El JSON minificado es una única línea enorme, y cualquier diff sobre él es una reescritura del archivo completo.
Lo que minificar no hace
No acorta claves, no elimina valores null, no reordena nada ni cambia números. Eso son transformaciones de tus datos, no de su formato, y un minificador que las hiciera en silencio sería peligroso.
En particular, los números conservan su texto exacto. Un minificador construido sobre JSON.parse convertiría 1.50 en 1.5 y 1e3 en 1000, lo cual ocupa menos pero también es un documento distinto.
How to do this in code
Minificar en código.
js JavaScript
const min = JSON.stringify(JSON.parse(text));
// Note this also normalises numbers: 1.50 becomes 1.5. py Python
json.dumps usa ", " y ": " como separadores por defecto, así que la llamada ingenua no está minificada de verdad.
import json
# The separators argument is the part people miss: without it
# Python leaves a space after every comma and colon.
min_text = json.dumps(json.loads(text), separators=(',', ':')) sh jq
jq -c . input.json > output.min.json go Go
var buf bytes.Buffer
if err := json.Compact(&buf, data); err != nil {
return err
}
// Compact works on bytes, so numbers are untouched. Preguntas frecuentes
- ¿Cuánto voy a ahorrar realmente?
- La herramienta muestra el recuento de bytes antes y después para tu documento concreto. Como regla general, el JSON formateado con dos espacios es entre un 10 y un 20 por ciento espacio en blanco, y con cuatro espacios más. Sobre una conexión con gzip el ahorro real es mucho menor, porque la compresión ya gestiona bien la repetición.
- ¿Sigue siendo válido el JSON minificado?
- Sí. El espacio en blanco entre tokens no es significativo, así que un documento minificado y uno formateado se parsean exactamente al mismo valor.
- ¿Debería minificar el JSON de mi repositorio?
- No. El control de versiones existe para que las personas lean diffs, y un archivo minificado hace que cualquier cambio parezca una reescritura completa. Minifica en el momento de compilar o de enviar.