Vai al contenuto
jsonbeautifiers
Italiano

Minificare JSON

Toglie ogni byte di spazio bianco e mostra esattamente quanto hai risparmiato.

Filtra con JSONPath

Sintassi RFC 9535. Il risultato sostituisce il pannello da cui hai aperto questa finestra.

 

Nulla di ciò che incolli lascia il tuo browser. L’allowlist connect-src ne fa una garanzia del browser anziché una promessa. Verificalo tu stesso

Minificare toglie ogni byte di spazio bianco che un parser ignora: gli a capo, l’indentazione, lo spazio dopo ogni due punti. Non cambia nient’altro, e il risultato analizzato è identico.

Su un payload di API formattato tipico questo toglie tra il 10 e il 20 per cento dei byte. Su un documento molto annidato formattato con quattro spazi può superare un terzo.

Dove serve davvero e dove no

Minificare conviene per tutto ciò che viene archiviato o trasmesso in quantità: risposte di API, configurazione inclusa in un bundle, messaggi in coda, righe in uno storage a colonne.

Su HTTP conviene molto meno di quanto si creda, perché gzip e brotli comprimono già benissimo lo spazio bianco ripetuto. Minificare una risposta già compressa con gzip fa risparmiare qualche punto percentuale, non venti. Dove conta ancora è ovunque non ci sia compressione: storage locale, una colonna di database, il corpo di un messaggio con un limite di dimensione rigido, o una riga di log.

Non conviene affatto per un file che legge una persona. Il JSON minificato è un’unica riga enorme, e ogni diff su di essa è una riscrittura dell’intero file.

Che cosa la minificazione non fa

Non accorcia le chiavi, non elimina i valori null, non riordina nulla e non tocca i numeri. Sono trasformazioni dei tuoi dati, non della loro formattazione, e un minificatore che le facesse in silenzio sarebbe pericoloso.

In particolare, i numeri conservano il testo esatto. Un minificatore costruito su JSON.parse trasformerebbe 1.50 in 1.5 e 1e3 in 1000: più piccolo, ma anche un documento diverso.

How to do this in code

Minificare nel codice.

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 ": " come separatori predefiniti, quindi la chiamata ingenua non è affatto minificata.

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.

Domande frequenti

Quanto risparmierò davvero?
Lo strumento mostra il conteggio dei byte prima e dopo per il tuo documento specifico. Come regola generale, il JSON formattato con due spazi è per il 10-20 per cento spazio bianco, con quattro spazi di più. Su una connessione con gzip il risparmio reale è molto minore, perché la compressione gestisce già bene le ripetizioni.
Il JSON minificato è ancora valido?
Sì. Lo spazio bianco tra i token non è significativo, quindi un documento minificato e uno formattato si analizzano esattamente nello stesso valore.
Dovrei minificare il JSON nel mio repository?
No. Il controllo di versione serve a far leggere i diff alle persone, e un file minificato fa sembrare ogni modifica una riscrittura completa. Minifica al momento della build o dell’invio.