JSON Pretty Print
Formatéalo aquí, o copia la línea equivalente para Python, JavaScript, jq y seis lenguajes más.
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.