Minificar JSON
Remove cada byte de espaço em branco e mostra exatamente quanto você economizou.
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
Minificar remove cada byte de espaço em branco que um parser ignora: as quebras de linha, a indentação, o espaço depois de cada dois-pontos. Nada mais muda, e o resultado do parsing é idêntico.
Em um payload de API formatado típico isso tira entre 10 e 20 por cento dos bytes. Em um documento bem aninhado formatado com quatro espaços pode passar de um terço.
Onde isso ajuda de verdade e onde não
Minificar compensa para tudo que é armazenado ou transmitido em volume: respostas de API, configuração embutida em um bundle, mensagens em uma fila, linhas em um armazenamento colunar.
Compensa muito menos do que as pessoas imaginam em HTTP, porque gzip e brotli já comprimem espaço em branco repetido extremamente bem. Minificar uma resposta que já vai com gzip costuma economizar poucos por cento, não vinte. Onde ainda importa é em todo lugar em que não há compressão: armazenamento local, uma coluna de banco de dados, um corpo de mensagem com limite rígido de tamanho, ou uma linha de log.
Não compensa nada em um arquivo que uma pessoa lê. JSON minificado é uma única linha enorme, e todo diff nele é uma reescrita do arquivo inteiro.
O que minificar não faz
Não encurta chaves, não descarta valores null, não reordena nada nem altera números. Isso são transformações dos seus dados, não da formatação deles, e um minificador que fizesse isso em silêncio seria perigoso.
Em particular, os números mantêm o texto exato. Um minificador construído sobre JSON.parse transformaria 1.50 em 1.5 e 1e3 em 1000, o que é menor mas também é outro documento.
How to do this in code
Minificando em código.
js JavaScript
const min = JSON.stringify(JSON.parse(text));
// Note this also normalises numbers: 1.50 becomes 1.5. py Python
json.dumps usa ", " e ": " como separadores por padrão, então a chamada ingênua não está de fato minificada.
import json
# The separators argument is the part people miss: without it
# Python leaves a space after every comma and colon.
min_text = json.dumps(json.loads(text), separators=(',', ':')) sh jq
jq -c . input.json > output.min.json go Go
var buf bytes.Buffer
if err := json.Compact(&buf, data); err != nil {
return err
}
// Compact works on bytes, so numbers are untouched. Perguntas frequentes
- Quanto eu vou economizar de verdade?
- A ferramenta mostra a contagem de bytes antes e depois para o seu documento específico. Como regra geral, JSON formatado com dois espaços é de 10 a 20 por cento espaço em branco, e com quatro espaços é mais. Em uma conexão com gzip a economia real é bem menor, porque a compressão já lida bem com repetição.
- JSON minificado continua válido?
- Sim. Espaço em branco entre tokens não é significativo, então documentos minificados e formatados fazem parsing exatamente para o mesmo valor.
- Devo minificar o JSON do meu repositório?
- Não. Controle de versão existe para pessoas lerem diffs, e um arquivo minificado faz toda mudança parecer uma reescrita completa. Minifique na hora do build ou do envio.