JSON minifizieren
Entfernt jedes Byte Leerraum und zeigt genau, wie viel Sie gespart haben.
Nichts, was Sie einfügen, verlässt Ihren Browser. Die connect-src Erlaubnisliste macht daraus eine Garantie des Browsers statt eines Versprechens. Selbst überprüfen
Minifizieren entfernt jedes Byte Leerraum, das ein Parser ohnehin ignoriert: die Zeilenumbrüche, die Einrückung, das Leerzeichen nach jedem Doppelpunkt. Sonst ändert sich nichts, und das geparste Ergebnis ist identisch.
Bei einem typischen formatierten API-Payload verschwinden dabei 10 bis 20 Prozent der Bytes. Bei einem tief verschachtelten Dokument mit vier Leerzeichen Einrückung kann es mehr als ein Drittel sein.
Wo es wirklich hilft und wo nicht
Minifizieren lohnt sich für alles, was in Menge gespeichert oder übertragen wird: API-Antworten, in ein Bundle gebackene Konfiguration, Nachrichten in einer Queue, Zeilen in einem spaltenorientierten Speicher.
Über HTTP lohnt es sich weit weniger als erwartet, weil gzip und brotli wiederholten Leerraum bereits hervorragend komprimieren. Eine ohnehin gzip-komprimierte Antwort zu minifizieren spart typischerweise ein paar Prozent, nicht zwanzig. Wo es weiterhin zählt, ist überall dort, wo nicht komprimiert wird: lokaler Speicher, eine Datenbankspalte, ein Nachrichtenrumpf mit harter Größengrenze oder eine Logzeile.
Für eine Datei, die ein Mensch liest, lohnt es sich überhaupt nicht. Minifiziertes JSON ist eine einzige riesige Zeile, und jeder Diff darauf ist eine Neufassung der ganzen Datei.
Was Minifizieren nicht tut
Es kürzt keine Schlüssel, wirft keine null-Werte weg, sortiert nichts um und verändert keine Zahlen. Das wären Transformationen Ihrer Daten, nicht ihrer Formatierung, und ein Minifier, der das stillschweigend täte, wäre gefährlich.
Insbesondere behalten Zahlen ihren exakten Text. Ein Minifier auf Basis von JSON.parse würde aus 1.50 eine 1.5 und aus 1e3 eine 1000 machen - kleiner, aber eben auch ein anderes Dokument.
How to do this in code
Minifizieren im Code.
js JavaScript
const min = JSON.stringify(JSON.parse(text));
// Note this also normalises numbers: 1.50 becomes 1.5. py Python
json.dumps verwendet standardmäßig ", " und ": " als Trenner, der naive Aufruf ist also gar nicht minifiziert.
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. Häufige Fragen
- Wie viel spare ich tatsächlich?
- Das Werkzeug zeigt die Byte-Zahl vor und nach der Minifizierung für Ihr konkretes Dokument. Als Faustregel besteht mit zwei Leerzeichen formatiertes JSON zu 10 bis 20 Prozent aus Leerraum, mit vier Leerzeichen aus mehr. Über eine gzip-komprimierte Verbindung ist die reale Ersparnis deutlich kleiner, weil die Kompression Wiederholungen bereits gut behandelt.
- Ist minifiziertes JSON noch gültig?
- Ja. Leerraum zwischen Tokens ist bedeutungslos, minifizierte und formatierte Dokumente parsen also zu exakt demselben Wert.
- Sollte ich JSON in meinem Repository minifizieren?
- Nein. Versionskontrolle ist dafür da, dass Menschen Diffs lesen, und eine minifizierte Datei lässt jede Änderung wie eine komplette Neufassung aussehen. Minifizieren Sie beim Bauen oder beim Senden.