JSON Pretty Print
Formate aqui, ou copie a linha equivalente para Python, JavaScript, jq e mais seis linguagens.
Nada do que você cola sai do seu navegador. A lista de permissões connect-src transforma isso em uma garantia do navegador, e não em uma promessa. Confira você mesmo
Pretty print e formatar são a mesma operação com dois nomes. Cole um documento acima para fazer isso aqui, ou leve a linha equivalente para a linguagem em que você já está trabalhando.
Os exemplos abaixo são as versões que funcionam de verdade, incluindo os argumentos que as pessoas costumam descobrir só depois que a saída sai errada.
Os argumentos que pegam todo mundo
- O ensure_ascii do Python
- Vem como True por padrão, o que escapa todo caractere não ASCII. Um documento cheio de nomes ou emojis volta como uma parede de sequências \u. Passe ensure_ascii=False.
- Os separators do Python ao minificar
- json.dumps deixa um espaço depois de cada vírgula e de cada dois-pontos a menos que você passe separators=(",", ":"), então a chamada ingênua de minificação não minifica.
- O escape de barras do PHP
- json_encode escapa barras e Unicode por padrão. JSON_UNESCAPED_SLASHES e JSON_UNESCAPED_UNICODE desligam isso. O PHP também indenta com quatro espaços e não deixa você mudar.
- O escape de HTML do Go
- O encoder escapa <, > e & para \u003c e companhia por padrão, para embutir com segurança em HTML. SetEscapeHTML(false) desliga.
- Todos eles dão uma volta completa nos seus números
- Fazer parsing e reserializar reescreve o texto dos números. 1.50 vira 1.5 e um ID de 19 dígitos perde os últimos algarismos. O Go é a exceção: json.Indent trabalha sobre os bytes crus.
How to do this in code
Pretty print em nove linguagens e ferramentas.
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 e o 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 reformata os bytes sem decodificar, então os seus números ficam 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
Ative o recurso arbitrary_precision do serde_json para manter o texto dos números intacto na ida e volta.
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 }); Perguntas frequentes
- Pretty print é diferente de embelezar ou formatar?
- Não. Os três significam acrescentar espaço em branco para que uma pessoa consiga ler o documento. Cada comunidade acabou adotando uma palavra diferente.
- Como faço pretty print de JSON no VS Code?
- Abra o arquivo e aperte Shift+Alt+F no Windows e no Linux, ou Shift+Option+F no macOS. Para um trecho que você colou em um arquivo sem título, mude antes o modo de linguagem para JSON, senão o formatador não vai saber o que fazer.
- Como faço pretty print de uma resposta do curl?
- Mande por pipe: curl -s URL | jq . se você tiver jq, ou curl -s URL | python -m json.tool se não tiver. Ponha o -s no curl, ou o indicador de progresso dele acaba entrando no pipe.