Ir para o conteúdo
jsonbeautifiers
Português

JSON Pretty Print

Formate aqui, ou copie a linha equivalente para Python, JavaScript, jq e mais seis linguagens.

Filtrar com JSONPath

Sintaxe da RFC 9535. O resultado substitui o painel a partir do qual você abriu esta janela.

 

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.