A primeira vez que minificar JSON realmente importava para mim não estava em um site - estava em um microcontrolador Eu estava enviando um blob de configuração para um dispositivo com alguns kilobytes de memória de sobra, e a versão bastante impressa que EU estava editando à mão tinha quase o dobro do tamanho dos mesmos dados com o espaço em branco removido Mesmas teclas, mesmos valores, mesma estrutura - a única diferença eram milhares de espaços e novas linhas que existiam puramente para que um ser humano pudesse lê-lo Tirar aqueles e o ajuste de carga útil Esse é todo o truque por trás da minificação, e se aplica tanto a uma resposta de API servida um milhão de vezes por dia quanto a um arquivo de configuração espremido em um chip.
Este guia é a versão completa de como e por que minificar o JSON, construído em torno do gratuito Minificador JSON ferramenta. vou explicar o que a minificação remove e o que ela deixa deliberadamente sozinho, por que JSON menor é mais rápido, como a minificação difere da formatação e do escape, e uma propriedade sutil - precisão numérica - que separa um minificador cuidadoso de um descuidado. Faz parte da mesma família que o formatador json Eu uso para o trabalho oposto, e ele pertence ao kit de ferramentas que estabeleci no Guia definitivo para ferramentas JSON.
tl;dr: Minificar JSON remove todos os espaços, tabulações e novas linhas que ficam entre os tokens, produzindo o menor texto que analisa exatamente os mesmos dados Nada sobre as chaves, valores ou suas alterações de ordem - apenas o espaço em branco vai Minificador JSON valida sua entrada primeiro e relata o analisador' s erro exato se ele é malformado, tiras de espaço em branco apenas fora literais string para texto dentro de seus valores é intocado, e preserva tokens numéricos byte por byte assim um valor como 1.0 fica 1.0. um modo embelezar inverte o processo com 2 espaços, 4 espaços, ou guias Tudo é executado em seu navegador.
O que a mineração de JSON realmente faz?
Um documento JSON é uma sequência de tokens - chaves, colchetes, dois pontos, vírgulas, strings, números e literais true, false, e null. Entre esses tokens, a gramática JSON permite qualquer quantidade de espaço em branco, e JSON bastante impresso usa essa permissão generosamente: uma nova linha após cada vírgula, dois ou quatro espaços de recuo por nível de aninhamento, um espaço após cada dois pontos Todo esse espaço em branco está lá para os olhos humanos Um analisador ignora completamente.
Minificar é o ato de remover cada um desses caracteres insignificantes de espaço em branco, deixando apenas os próprios tokens e a pontuação mínima que a gramática exige Uma configuração que se lê como quarenta linhas recuadas colapsa para uma única linha densa Crucialmente, o dados é idêntico - analisar a versão minificada e a versão bonita e você obter o exato mesmo objeto, com as mesmas chaves na mesma ordem e os mesmos valores A minificação muda a representação, nunca o significado A gramática que tudo isso repousa é publicado como RFC 8259, que é a autoridade no que conta como espaço em branco insignificante e no que não conta.
O único lugar onde o espaço em branco é não insignificante está dentro de uma string Os espaços em "hello world" são parte do valor e deve sobreviver minificação intocada Um minificador correto, portanto, não pode simplesmente excluir todos os espaços no texto; ele tem que rastrear se ele está dentro de uma cadeia literal e deixar esse conteúdo sozinho O Minificador JSON faz exatamente isso, andando o texto caractere por caractere e apenas soltando espaços em branco que ficam entre os tokens, de modo que um espaço deliberado dentro de um de seus valores nunca seja perdido.
Por que se preocupar em minificar JSON?
O motivo do título é tamanho, e o tamanho se traduz diretamente em velocidade e custo na web Cada byte de uma resposta JSON tem que viajar pela rede e, para uma carga útil solicitada milhares ou milhões de vezes, o espaço em branco soma-se à largura de banda real O recuo e as quebras de linha geralmente representam um quinto a um terço de um documento bastante impresso & #39; s tamanho, portanto, a minificação pode cortar uma fatia significativa de cada transferência Respostas menores chegam mais rápido, especialmente em conexões móveis lentas, e custam menos para servir quando você está pagando pelo egresso É por isso que praticamente toda API de produção retorna JSON minificado e toda ferramenta de compilação que agrupa dados em um aplicativo da web o minifica primeiro.
Há um benefício de análise também, embora seja menor Um analisador que não precisa pular execuções de espaços em branco tem um pouco menos de trabalho a fazer, o que importa nas margens para documentos muito grandes processados em um loop quente E há um ângulo de armazenamento que me trouxe aqui em primeiro lugar: quando você está encaixando JSON em um espaço restrito - um cookie com um limite de tamanho, um dispositivo incorporado, uma coluna de banco de dados com um limite, um parâmetro de consulta de URL - o formulário minificado é o que o torna adequado O emblema de economia de tamanho na ferramenta mostra o antes e depois em bytes e a redução percentual, para que você possa ver imediatamente se um determinado documento vale a pena minificar ou já era enxuto.
O que a minificação faz não buy you is secrety or compression in the heavyweight sense JSON minificado ainda é texto simples e ainda perfeitamente legível para qualquer coisa que o analise; remover espaços em branco não é criptografia e nem gzip. No fio, JSON geralmente é compactado por gzip em cima da minificação, e os dois são complementares - a minificação remove a redundância que a gramática permite, e o gzip remove a redundância no fluxo de bytes Minificar pelas razões acima, não porque você acha que esconde qualquer coisa.
Como a minificação é diferente de formatar, escapar e compactar?
Essas quatro operações ficam confusas constantemente, e mantê-las retas salva você de alcançar a ferramenta errada Eles agem em coisas diferentes e resolvem problemas diferentes.
Minificação remove espaços em branco insignificantes para tornar um documento menor, mantendo-o válido JSON. Formatação, ou embelezar, faz o inverso: adiciona indentação e quebras de linha para tornar um documento legível, que é o que você deseja quando está depurando uma resposta de API ou editando uma configuração à mão Minificador JSON faz ambos, porque são duas direções do mesmo eixo - minify para máquinas, embelezar para as pessoas. Escapando é um eixo totalmente diferente: torna um pedaço de texto seguro para colocar interior uma string JSON transformando aspas e caracteres de controle em sequências de barra invertida, que é o trabalho do json escape/unescape ferramenta. E compressão assim como o gzip opera em bytes brutos abaixo da camada JSON, diminuindo ainda mais a transferência após a minificação ter feito sua parte.
A tabela apresenta as distinções e pontos na ferramenta certa para cada um.
| Operação | O que muda | Resultado ainda é JSON? | ferramenta |
|---|---|---|---|
| reduzir | Remove espaços em branco entre tokens | Sim, mesmos dados | Minificador JSON |
| Embelezar/formatar | Adiciona indentação e quebras de linha | Sim, mesmos dados | formatador json |
| Fuga | Codifica o texto para ficar dentro de uma string JSON | Torna-se um valor de string | json escape/unescape |
| Minificar CSS | Remove espaços em branco de uma folha de estilo | É CSS, não JSON | Minificador de CSS |
| Minificar HTML | Remove espaços em branco da marcação | É HTML, não JSON | Minificador de HTML |
A mesma ideia de minificar para envio é executada em formatos, e é por isso que o Minificador de CSS e Minificador de HTML sente-se bem ao lado deste - uma compilação completa minifica os dados JSON, a folha de estilo e a marcação pelos mesmos motivos de largura de banda.
Minificar JSON alguma vez altera meus dados?
A resposta correta é que a minificação deveria nunca altere seus dados, e uma boa ferramenta garante Mas há uma sutileza que separa um minificador cuidadoso de um ingênuo, e vale a pena entender porque ele pode mordê-lo.
Muitos minificadores funcionam analisando o JSON em um objeto na memória e depois serializando-o novamente sem espaço em branco. Essa viagem de ida e volta é conveniente, mas significa que cada valor passa pela linguagem e o número #39; tipo no caminho, e isso pode reescrever como são os números escrito mesmo que o valor matemático esteja inalterado Um valor que você escreveu como 1.0 volta como 1. Um valor como 1e3 volta como 1000. Um número inteiro com mais dígitos do que a linguagem' s tipo de número pode conter precisamente - qualquer coisa além de cerca de dezesseis dígitos significativos - pode voltar sutilmente alterado Para a maioria dos documentos nada disso importa, mas se o seu JSON carrega cadeias de versão, identificadores de banco de dados ou decimais de precisão fixa como números, um minificador de repasse e restringificação pode silenciosamente corrompê-los.
o Minificador JSON evita a armadilha minificando de forma diferente Ainda assim valida sua entrada analisando-a, então JSON malformado é capturado e relatado Mas para produzir a saída retira espaço em branco diretamente do seu texto original em vez de re-serializar um objeto analisado, o que significa que cada token numérico é preservado exatamente como você escreveu Um trailing-zero 1.0 fica 1.0; um número inteiro de trinta dígitos mantém todos os trinta dígitos. Você obtém a redução de tamanho da minificação sem qualquer risco de seus números serem reescritos - o melhor da validação e da fidelidade byte por byte. A direção de embelezamento, sendo sobre legibilidade em vez de transporte, normaliza a formatação por meio de uma resserialização padrão, que é o comportamento esperado quando você está reformatando para leitura humana.
Como leio os erros quando meu JSON não minifica?
A ferramenta valida antes de minificar, o que significa que um documento malformado produz um erro em vez de uma saída quebrada - e esse erro é um recurso, não um obstáculo. Ele informa que o JSON tem um problema real antes você envia para algum lugar que o rejeitaria de forma menos útil.
As mensagens vêm diretamente do analisador JavaScript JSON e geralmente nomeiam uma posição As causas mais comuns são uma vírgula posterior após o último elemento de uma matriz ou objeto, que JSON estrito proíbe; uma chave que não é envolvida em aspas duplas, uma vez que JSON requer chaves citadas ao contrário dos literais de objeto JavaScript; uma string usando aspas simples em vez de duplas; e um colchete ou colchete desequilibrado onde algo foi aberto e não fechado Cada um deles é uma pequena correção uma vez que você sabe para onde procurar, e a posição relatada aponta para você na vizinhança Se sua fonte é realmente JSONC - JSON com comentários e vírgulas finais, como usado em alguns arquivos de configuração - ele não minificará como está, porque essas são extensões em vez de JSON padrão; retire os comentários e vírgulas finais primeiro, ou converta para JSON estrito, e ele validará.
Quando a estrutura é válida mas não se consegue ver por que dois documentos se comportam de maneira diferente, embelezam ambos e os comparam, ou os percorrem json diff ferramenta para ver exatamente quais chaves ou valores diferem. Depurar JSON é muito mais fácil em sua forma bonita, que é o caso cotidiano que fiz no Guia de formatação JSON. E como toda essa validação e minificação acontece em seu navegador sem nada carregado, você pode colar com segurança cargas úteis que contêm chaves de API, tokens ou registros de clientes - o argumento de privacidade que estabeleci na íntegra no guia de privacidade de dados para ferramentas online.
Um exemplo trabalhado: da configuração legível à carga útil enviada
Aqui está a viagem de ida e volta que mostra a ferramenta ganhando seu lugar Diga que você tem editado uma configuração de serviço à mão, por isso é bastante impresso para legibilidade - teclas de objeto em suas próprias linhas, recuo de dois espaços, uma estrutura em branco que é fácil de digitalizar Antes de entrar em uma variável de ambiente com um limite de comprimento, você deseja que seja o menor possível.
Cole a configuração no Minificador JSON, clique em Minificar, e ele colapsa para uma única linha O emblema de tamanho pode ler algo como 512 bytes até 340, uma redução de um terço, que é a diferença entre ajustar a variável & #39; s limite e não. Copie a linha minificada diretamente em seu arquivo de ambiente Observe que um tempo limite você escreveu como 1.5 ainda está 1.5 e uma nova contagem de 3 ainda está 3 - os números não são tocados e, se você tivesse um identificador numérico longo, ele sobreviveria intacto também, porque a ferramenta despojava espaços em branco em vez de analisar os valores.
Semanas depois, um relatório de bug mostra você olhando para o mesmo blob minificado em um log, e é ilegível como uma linha densa Cole-o de volta na ferramenta, clique em Embelezar, escolha dois espaços e ele se expande para a forma recuada que você pode realmente verificar. Corrigir o valor, minificar novamente, enviar novamente. Esse fluxo bidirecional - embelezar para ler e editar, minificar para armazenar e enviar - é o ritmo diário e ter ambos em um só lugar com uma leitura de tamanho e relatórios de erros exatos é o que o torna rápido. Para o conjunto mais amplo de utilitários de construção e envio, isso está entre os Kit de ferramentas para desenvolvedores web arredonda o resto.
Perguntas frequentes
Como faço para minificar o JSON online? Cole seu JSON na área de entrada e clique em Minificar A ferramenta remove todos os espaços em branco fora dos valores da string e mostra o resultado compactado junto com a economia de tamanho Tudo é executado em seu navegador, então nada é carregado.
Minificar JSON altera os dados? No. Minifying remove apenas o espaço em branco entre tokens, para que as chaves, valores e sua ordem permaneçam idênticos Um documento minificado analisa exatamente o mesmo objeto ou matriz que o original bastante impresso.
Por que minificar JSON? O JSON minificado é menor, por isso transfere mais rápido pela rede, usa menos largura de banda e analisa um pouco mais rapidamente. As respostas da API, os arquivos de configuração e os dados agrupados em aplicativos da web normalmente são minificados na produção por esses motivos.
Esta ferramenta preserva a formatação de números como 1.0 ou números inteiros grandes? Sim. Porque retira espaços em branco em vez de reparsar valores, os tokens numéricos são mantidos exatamente como você os escreveu Um valor como 1.0 permanece 1.0 e um inteiro muito grande mantém todos os seus dígitos, que um minificador de análise e restringificação reescreveria.
Qual é a diferença entre minificar e embelezar o JSON? Minificar remove espaços em branco para tornar o JSON o menor possível para máquinas, enquanto embelezar adiciona recuo e quebras de linha para torná-lo legível para pessoas Esta ferramenta faz as duas coisas: minificar para envio, embelezar para edição e depuração.
Pode minificar JSON com comentários ou vírgulas à direita? No. JSON padrão não permite comentários ou vírgulas à direita, então a ferramenta relata isso como erros durante a validação Remova comentários e vírgulas à direita primeiro, ou converta seu JSONC para JSON estrito, depois minifique.
É seguro minificar JSON sensível aqui? Sim. todo o processamento acontece em JavaScript dentro do seu navegador, então nenhum JSON é enviado para qualquer servidor, nada é registrado e a ferramenta funciona com sua conexão desativada Você pode minificar com segurança cargas úteis que contêm chaves de API ou dados pessoais.
Por que meu JSON mostra um erro em vez de minificar? A ferramenta valida sua entrada antes de minificar, portanto, um erro significa que o JSON está malformado, geralmente uma vírgula ausente ou extra, uma chave não citada, uma string com uma única citação ou um colchete desequilibrado A mensagem inclui a posição do problema para que você possa corrigi-lo.
Este guia acompanha o gratuito Minificador JSON ferramenta em Toolz.dev - sem inscrição, sem uploads, funciona offline.



