Saltar al contenido
jsonbeautifiers
Español

JSON Pretty Print

Formatéalo aquí, o copia la línea equivalente para Python, JavaScript, jq y seis lenguajes más.

Filtrar con JSONPath

Sintaxis RFC 9535. El resultado reemplaza el panel desde el que abriste esta ventana.

 

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

Pretty print y formatear son la misma operación con dos nombres. Pega un documento arriba para hacerlo aquí, o llévate la línea equivalente para el lenguaje en el que ya estés trabajando.

Los ejemplos de abajo son las versiones que funcionan de verdad, incluidos los argumentos que la gente suele descubrir solo después de que la salida sale mal.

Los argumentos que pillan a todo el mundo

El ensure_ascii de Python
Vale True por defecto, lo que escapa todos los caracteres no ASCII. Un documento lleno de nombres o emojis vuelve como un muro de secuencias \u. Pasa ensure_ascii=False.
Los separators de Python al minificar
json.dumps deja un espacio después de cada coma y cada dos puntos salvo que pases separators=(",", ":"), así que la llamada ingenua para minificar no minifica.
El escapado de barras de PHP
json_encode escapa las barras y el Unicode por defecto. JSON_UNESCAPED_SLASHES y JSON_UNESCAPED_UNICODE lo desactivan. PHP además indenta con cuatro espacios y no te deja cambiarlo.
El escapado de HTML de Go
El codificador escapa <, > y & a \u003c y compañía por defecto, para que sea seguro incrustarlo en HTML. SetEscapeHTML(false) lo desactiva.
Todos estos dan un ida y vuelta a tus números
Parsear y reserializar reescribe el texto de los números. 1.50 pasa a ser 1.5 y un ID de 19 dígitos pierde sus últimas cifras. Go es la excepción: json.Indent trabaja sobre los bytes crudos.

How to do this in code

Pretty print en nueve lenguajes y herramientas.

js JavaScript
JSON.stringify(JSON.parse(text), null, 2)
py Python
json.dumps(json.loads(text), indent=2, ensure_ascii=False)

# From a file, on the command line
python -m json.tool --indent 2 --no-ensure-ascii in.json out.json
sh jq y la shell
jq . file.json
curl -s https://api.example.com/x | jq .
pbpaste | jq .            # macOS, from the clipboard
jq -S . file.json         # sorted keys, for stable diffs
go Go

json.Indent reformatea los bytes sin decodificar, así que tus números quedan intactos.

var out bytes.Buffer
json.Indent(&out, data, "", "  ")
fmt.Println(out.String())
rb Ruby
JSON.pretty_generate(JSON.parse(text))
php PHP
json_encode(json_decode($text), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)
java Java
ObjectMapper mapper = new ObjectMapper();
Object value = mapper.readValue(text, Object.class);
String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(value);
rs Rust

Activa la característica arbitrary_precision de serde_json para conservar intacto el texto de los números durante el ida y vuelta.

let value: serde_json::Value = serde_json::from_str(text)?;
let pretty = serde_json::to_string_pretty(&value)?;
cs C#
using var doc = JsonDocument.Parse(text);
var pretty = JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true });

Preguntas frecuentes

¿Pretty print es distinto de embellecer o formatear?
No. Los tres significan añadir espacio en blanco para que una persona pueda leer el documento. Cada comunidad se quedó con una palabra distinta.
¿Cómo formateo JSON en VS Code?
Abre el archivo y pulsa Shift+Alt+F en Windows y Linux, o Shift+Opción+F en macOS. Para un fragmento que hayas pegado en un archivo sin título, cambia antes el modo de lenguaje a JSON o el formateador no sabrá qué hacer con él.
¿Cómo formateo la respuesta de un curl?
Redirígela con una tubería: curl -s URL | jq . si tienes jq, o curl -s URL | python -m json.tool si no. Añade -s a curl o su indicador de progreso acabará dentro de la tubería.