← Volver al Blog

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 Team9 min de lecturaHerramientas
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

9 min lectura

# 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

Configuración:
{

"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:
  • Ctrl+Shift+P → Package Control: Install Package
  • Buscar "Pretty JSON"
  • Instalar
  • 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!

    Share:

    Artículos Relacionados

    Read in English