Cómo Formatear JSON: Guía Completa de Pretty Print y Minificación
Aprende a formatear JSON correctamente con técnicas de pretty printing, minificación y herramientas. Incluye ejemplos en JavaScript, Python y herramientas en línea.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# Cómo Formatear JSON: Guía Completa de Pretty Print y Minificación
El formato JSON adecuado es crucial para la legibilidad y mantenimiento del código. Esta guía te enseñará todo sobre formatear JSON, desde técnicas básicas hasta herramientas avanzadas.
¿Qué es el Formateo JSON?
El formateo JSON (también conocido como "pretty printing" o "beautifying") es el proceso de añadir indentación, saltos de línea y espaciado a JSON para hacerlo más legible para humanos.
JSON Sin Formatear vs Formateado
Sin Formatear (Minificado){"nombre":"Ana García","edad":28,"ciudad":"Madrid","habilidades":["JavaScript","Python","React"],"activo":true}
Formateado (Pretty Print)
{
"nombre": "Ana García",
"edad": 28,
"ciudad": "Madrid",
"habilidades": [
"JavaScript",
"Python",
"React"
],
"activo": true
}
Formatear JSON en JavaScript
Usando JSON.stringify()
El método más común en JavaScript:
const datos = {
nombre: "Carlos López",
edad: 35,
contacto: {
email: "carlos@ejemplo.com",
telefono: "+34600123456"
},
habilidades: ["Node.js", "MongoDB", "Express"]
};
// Pretty print con 2 espacios de indentación
const jsonFormateado = JSON.stringify(datos, null, 2);
console.log(jsonFormateado);
Salida:
{
"nombre": "Carlos López",
"edad": 35,
"contacto": {
"email": "carlos@ejemplo.com",
"telefono": "+34600123456"
},
"habilidades": [
"Node.js",
"MongoDB",
"Express"
]
}
Parámetros de JSON.stringify()
JSON.stringify(valor, replacer, espacio)
- valor: El objeto a convertir
- replacer: Función o array para filtrar propiedades
- espacio: Número de espacios o cadena para indentación
Ejemplos de Indentación
const obj = {a: 1, b: 2, c: 3};
// 2 espacios
console.log(JSON.stringify(obj, null, 2));
/
{
"a": 1,
"b": 2,
"c": 3
}
/
// 4 espacios
console.log(JSON.stringify(obj, null, 4));
/
{
"a": 1,
"b": 2,
"c": 3
}
/
// Usar tabs
console.log(JSON.stringify(obj, null, ' '));
/
{
"a": 1,
"b": 2,
"c": 3
}
/
Filtrar Propiedades con Replacer
const usuario = {
nombre: "María",
edad: 30,
password: "secreto123",
email: "maria@ejemplo.com"
};
// Incluir solo propiedades específicas
const jsonSeguro = JSON.stringify(
usuario,
['nombre', 'email'],
2
);
console.log(jsonSeguro);
/
{
"nombre": "María",
"email": "maria@ejemplo.com"
}
/
Replacer Personalizado
const datos = {
titulo: "Mi Artículo",
contenido: "Lorem ipsum dolor sit amet...",
fecha: new Date(),
precio: 99.99
};
const replacer = (clave, valor) => {
// Formatear fechas
if (valor instanceof Date) {
return valor.toISOString();
}
// Formatear precios
if (clave === 'precio') {
return €${valor.toFixed(2)};
}
return valor;
};
console.log(JSON.stringify(datos, replacer, 2));
Formatear JSON en Python
Usando json.dumps()
import json
datos = {
"nombre": "Isabel Ruiz",
"edad": 32,
"ciudad": "Barcelona",
"idiomas": ["español", "catalán", "inglés"]
}
# Pretty print con 2 espacios
json_formateado = json.dumps(datos, indent=2, ensure_ascii=False)
print(json_formateado)
Salida:
{
"nombre": "Isabel Ruiz",
"edad": 32,
"ciudad": "Barcelona",
"idiomas": [
"español",
"catalán",
"inglés"
]
}
Opciones de json.dumps()
import json
datos = {"nombre": "José", "apellido": "García"}
# Diferentes opciones de formateo
json.dumps(datos, indent=4) # 4 espacios
json.dumps(datos, indent=' ') # Tabs
json.dumps(datos, ensure_ascii=False) # Preservar caracteres Unicode
json.dumps(datos, sort_keys=True) # Ordenar claves alfabéticamente
json.dumps(datos, separators=(',', ': ')) # Separadores personalizados
Formatear al Escribir a Archivo
import json
datos = {
"configuracion": {
"tema": "oscuro",
"idioma": "es",
"notificaciones": True
}
}
# Escribir JSON formateado a archivo
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(datos, f, indent=2, ensure_ascii=False)
Ordenar Claves
import json
datos = {
"z_ultima": "valor",
"a_primera": "valor",
"m_medio": "valor"
}
# Ordenar alfabéticamente
json_ordenado = json.dumps(datos, indent=2, sort_keys=True)
print(json_ordenado)
/
{
"a_primera": "valor",
"m_medio": "valor",
"z_ultima": "valor"
}
/
Herramientas de Línea de Comandos
jq - El Procesador JSON
# Formatear archivo JSON
jq . archivo.json
# Formatear con indentación específica
jq --indent 4 . archivo.json
# Formatear y guardar en archivo nuevo
jq . entrada.json > salida.json
# Formatear JSON desde clipboard
pbpaste | jq .
# Extraer campos específicos formateados
jq '.usuarios[] | {nombre, email}' datos.json
Python desde Línea de Comandos
# Formatear JSON
python -m json.tool archivo.json
# Formatear con indentación personalizada
python -m json.tool --indent=4 archivo.json
# Formatear desde stdin
echo '{"nombre":"Juan","edad":25}' | python -m json.tool
Node.js desde Línea de Comandos
# Formatear JSON
node -e "console.log(JSON.stringify(require('./archivo.json'), null, 2))"
# Crear script reutilizable
echo 'console.log(JSON.stringify(JSON.parse(require("fs").readFileSync(process.argv[2], "utf8")), null, 2))' > format.js
node format.js archivo.json
Herramientas en Línea
Big JSON Viewer
Para archivos JSON grandes o complejos, usa Big JSON Viewer en bigjson.online:
Características:- Vista en árbol navegable
- Formateo automático
- Resaltado de sintaxis
- Búsqueda y filtrado
- Manejo de archivos muy grandes
- Sin límite de tamaño
- Funciona en el navegador
Otros Formateadores en Línea
- JSONFormatter.org - Simple y rápido
- JSONLint.com - Validación + formateo
- JSON Editor Online - Editor visual
Minificar JSON
¿Por Qué Minificar?
La minificación reduce el tamaño del archivo eliminando espacios en blanco innecesarios:
// JSON formateado: 156 bytes
{
"nombre": "Pedro",
"edad": 40,
"ciudad": "Valencia"
}
// JSON minificado: 50 bytes
{"nombre":"Pedro","edad":40,"ciudad":"Valencia"}
JavaScript
const datos = {
nombre: "Laura",
edad: 27,
intereses: ["arte", "música", "viajes"]
};
// Minificar (sin espaciado)
const minificado = JSON.stringify(datos);
console.log(minificado);
// {"nombre":"Laura","edad":27,"intereses":["arte","música","viajes"]}
Python
import json
datos = {
"nombre": "Roberto",
"edad": 45,
"profesion": "ingeniero"
}
# Minificar
minificado = json.dumps(datos, separators=(',', ':'))
print(minificado)
# {"nombre":"Roberto","edad":45,"profesion":"ingeniero"}
Línea de Comandos
# Usando jq
jq -c . archivo.json
# Usando Python
python -c "import json,sys;print(json.dumps(json.load(sys.stdin)))" < archivo.json
# Guardar minificado
jq -c . archivo.json > archivo.min.json
Formateo en Editores de Código
Visual Studio Code
Atajos de teclado:- Windows/Linux:
Shift + Alt + F - Mac:
Shift + Option + F
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.json-language-features",
"[json]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
}
}
Sublime Text
Atajo:Ctrl + Alt + J (con plugin Pretty JSON)
Instalar plugin:
Vim
" Formatear JSON en Vim
:%!python -m json.tool
" O con jq
:%!jq .
Mejores Prácticas de Formateo
1. Consistencia en la Indentación
// ✅ Bueno - Consistente
{
"nivel1": {
"nivel2": {
"nivel3": "valor"
}
}
}
// ❌ Malo - Inconsistente
{
"nivel1": {
"nivel2": {
"nivel3": "valor"
}
}
}
2. Usa 2 Espacios para APIs Web
{
"usuarios": [
{
"id": 1,
"nombre": "Usuario 1"
}
]
}
3. Minifica para Producción
// Desarrollo - Formateado
const configDev = JSON.stringify(config, null, 2);
// Producción - Minificado
const configProd = JSON.stringify(config);
4. Ordena Claves para Diff
import json
# Ordenar para comparación fácil en Git
with open('config.json', 'w') as f:
json.dump(datos, f, indent=2, sort_keys=True)
Automatizar el Formateo
Git Hook Pre-commit
#!/bin/bash
# .git/hooks/pre-commit
# Formatear todos los archivos JSON
for archivo in $(git diff --cached --name-only | grep '.json$'); do
jq --indent 2 . "$archivo" > "$archivo.tmp"
mv "$archivo.tmp" "$archivo"
git add "$archivo"
done
NPM Script
{
"scripts": {
"format:json": "prettier --write '*/.json'",
"validate:json": "prettier --check '*/.json'"
}
}
Script Python
import json
import glob
# Formatear todos los JSON en directorio
for archivo in glob.glob('*/.json', recursive=True):
with open(archivo, 'r+') as f:
datos = json.load(f)
f.seek(0)
json.dump(datos, f, indent=2, ensure_ascii=False)
f.truncate()
Conclusión
El formateo adecuado de JSON es esencial para el desarrollo de software. Ya sea que necesites pretty print para depuración o minificación para producción, ahora tienes las herramientas y conocimientos necesarios.
Puntos Clave
- Usa JSON.stringify() con parámetro de espaciado para formatear
- Minifica JSON para producción (menor tamaño)
- Aprovecha herramientas de línea de comandos como jq
- Configura tu editor para formateo automático
- Usa Big JSON Viewer para archivos grandes
¡Comienza a formatear tu JSON correctamente hoy mismo!