Das erste Mal, dass mir die Minifizierung von JSON tatsächlich wichtig war, war nicht auf einer Website - es war auf einem Mikrocontroller. Ich verschickte einen Konfigurationsblob an ein Gerät mit ein paar Kilobyte Speicher übrig, und die hübsche gedruckte Version, die ich von Hand bearbeitet hatte, war fast doppelt so groß wie die gleichen Daten mit entferntem Leerraum Gleiche Schlüssel, gleiche Werte, gleiche Struktur - der einzige Unterschied bestand in Tausenden von Leerzeichen und Zeilen, die nur existierten, damit ein Mensch sie lesen konnte. Ziehen Sie diese heraus und die Nutzlast passt Das ist der ganze Trick hinter der Minifizierung, und es gilt genauso für eine API-Antwort, die eine Million Mal am Tag bedient wird, wie für eine auf einen Chip gepresste Konfigurationsdatei.
Diese Anleitung ist die ausführliche Version, wie und warum man JSON minimiert, basierend auf dem kostenlosen JSON-Minifier Werkzeug. ich werde erklären, was die Minifikation entfernt und was sie bewusst in Ruhe lässt, warum kleineres JSON schneller ist, wie sich das Minifizieren von der Formatierung und vom Entweichen unterscheidet und eine subtile Eigenschaft - die Zahlengenauigkeit - die einen sorgfältigen Minifier von einem unvorsichtigen unterscheidet Es ist Teil derselben Familie wie die JSON-Formater Ich verwende es für den umgekehrten Job und es gehört in das Toolkit, das ich im dargelegt habe Ultimative Anleitung zu JSON-Toolsdrohen
tl; dr: Durch die Minifizierung von JSON wird jedes Leerzeichen, jede Registerkarte und jede neue Zeile entfernt, die zwischen Token liegt, wodurch der kleinste Text entsteht, der genau auf dieselben Daten analysiert wird. Nichts über die Schlüssel, Werte oder deren Reihenfolge ändert sich - nur der Leerraum geht weiter. Die JSON-Minifier Validiert zuerst Ihre Eingabe und meldet den genauen Fehler von parser's, wenn es fehlerhaft ist, streift Leerzeichen nur außerhalb von String-Literalen, sodass Text innerhalb Ihrer Werte unberührt bleibt, und behält numerische Tokens-Byte für Byte bei, sodass ein Wert wie 1,0 1,0 bleibt. Ein Verschönerungsmodus kehrt den Prozess um mit 2 Leerzeichen, 4 Leerzeichen oder Tabulatoren. Alles läuft in Ihrem Browser.
Was macht das Minifizieren von JSON eigentlich?
Ein JSON-Dokument ist eine Folge von Token - Klammern, Klammern, Doppelpunkte, Kommas, Zeichenfolgen, Zahlen und Literale true, false, und null. Zwischen diesen Token erlaubt die JSON-Grammatik jede Menge Leerzeichen, und hübsch gedrucktes JSON verwendet diese Zulage großzügig: eine Zeilenumbruch nach jedem Komma, zwei oder vier Einrückungsräume pro Nistebene, ein Leerzeichen nach jedem Doppelpunkt. All dieser Leerraum ist für menschliche Augen da. Ein Parser ignoriert es völlig.
Minifizieren ist der Akt, jedes einzelne dieser unbedeutenden Leerzeichen zu entfernen, so dass nur die Token selbst und die minimale Interpunktion, die die Grammatik erfordert, übrig bleiben Eine Konfiguration, die als vierzig eingerückte Zeilen lautet, bricht zu einer einzigen dichten Linie zusammen Entscheidend ist, dass die Daten identisch ist - die minifizierte Version und die hübsche Version analysieren und man erhält genau das gleiche Objekt, mit den gleichen Schlüsseln in der gleichen Reihenfolge und den gleichen Werten, Minifikation verändert die Darstellung, niemals die Bedeutung Die Grammatik, auf der das alles ruht, wird veröffentlicht als RFC 8259, das ist die Autorität auf dem, was als unbedeutende Leerräume gilt und was nicht.
Der einzige Ort, an dem die Leerfläche ist nicht Unbedeutend ist innerhalb einer Schnur Die Leerzeichen in "hello world" Teil des Wertes sind und die Minifizierung unberührt überstehen müssen Ein korrekter Minifier kann daher nicht einfach jedes Leerzeichen im Text löschen; er muss verfolgen, ob es sich innerhalb eines String-Literals befindet und diesen Inhalt in Ruhe lassen Die JSON-Minifier Tut genau dies, indem Sie den Text Zeichen für Zeichen gehen und nur Leerzeichen fallen lassen, die zwischen Token liegen, sodass ein bewusster Raum innerhalb eines Ihrer Werte nie verloren geht.
Warum sollte man sich überhaupt die Mühe machen, JSON zu verminieren?
Der Grund für die Überschrift ist die Größe, und die Größe übersetzt sich direkt in Geschwindigkeit und Kosten im Web Jedes Byte einer JSON-Antwort muss über das Netzwerk wandern, und für eine tausende oder Millionen Mal angeforderte Nutzlast summiert sich der Leerraum zu echter Bandbreite Einrückung und Zeilenumbrüche machen üblicherweise ein Fünftel bis ein Drittel eines hübsch gedruckten Dokuments aus' s Größe, so dass Minifying jeden Transfer sinnvoll abschneiden kann Kleinere Antworten kommen schneller an, insbesondere bei langsamen mobilen Verbindungen, und sie kosten weniger, wenn Sie für Egress bezahlen. Aus diesem Grund gibt praktisch jede Produktions-API minifiziertes JSON und jedes Build-Tool zurück, das Daten in einer Web-App bündelt, minimiert es zuerst.
Es gibt auch einen Parsing-Vorteil, wenn auch kleiner. Ein Parser, der nicht über Leerlaufläufe springen muss, hat etwas weniger Arbeit zu erledigen, was bei sehr großen Dokumenten, die in einer Hot-Loop verarbeitet werden, am Rande wichtig ist. Und es gibt einen Speicherwinkel, der mich überhaupt hierher geführt hat: Wenn Sie JSON in einen eingeschränkten Raum einfügen - ein Cookie mit Größenbeschränkung, ein eingebettetes Gerät, eine Datenbankspalte mit einer Kappe, ein URL-Abfrageparameter - macht es das minifizierte Formular aus Das Größensparabzeichen im Tool zeigt Ihnen das Vorher und Nachher in Bytes und die prozentuale Reduzierung, sodass Sie sofort sehen können, ob ein bestimmtes Dokument eine Minifizierung wert ist oder bereits mager war.
Was Minifizieren bewirkt nicht Buy you is consimery or compression in the heavyweight sinne Minified JSON ist immer noch Klartext und immer noch perfekt lesbar für alles, was es analysiert; das Entfernen von Leerzeichen ist keine Verschlüsselung und kein Gzip Auf dem Draht wird JSON normalerweise zusätzlich zur Minifizierung gzip-komprimiert, und die beiden ergänzen sich - Minifizierung entfernt Redundanz, die die Grammatik zulässt, und gzip entfernt Redundanz im Byte-Stream Minify aus den oben genannten Gründen, nicht weil Sie denken, dass es irgendetwas verbirgt.
Wie unterscheidet sich Minifizieren von Formatieren, Escapezeichen und Komprimieren?
Diese vier Operationen werden ständig durcheinander gebracht, und wenn man sie gerade hält, erspart man sich den Griff zum falschen Werkzeug Sie wirken auf verschiedene Dinge und lösen verschiedene Probleme.
Minisierend Entfernt unbedeutenden Leerraum, um ein Dokument kleiner zu machen und es gleichzeitig gültig zu halten. Formatierung, oder verschönern, macht das Gegenteil: Es fügt Einrückungen und Zeilenumbrüche hinzu, um ein Dokument lesbar zu machen, was Sie wollen, wenn Sie eine API-Antwort debuggen oder eine Konfiguration von Hand bearbeiten Die JSON-Minifier Tut beides, weil es zwei Richtungen derselben Achse sind - minifizieren für Maschinen, verschönern für Menschen. Entkommend Ist eine ganz andere Achse: Es macht einen Textbrocken sicher platzierbar Innenseite Eine JSON-Zeichenfolge, indem Anführungszeichen und Steuerzeichen in Backslash-Sequenzen umgewandelt werden, was die Aufgabe des ist JSON-Flucht / Unentkommen Werkzeug. Und Kompression Wie gzip arbeitet auf rohen Bytes unterhalb der JSON-Schicht und verkleinert die Übertragung weiter, nachdem die Minifizierung ihren Teil dazu beigetragen hat.
Die Tabelle enthält die Unterscheidungen und Punkte für jedes Werkzeug am richtigen Werkzeug.
| Operation | Was es verändert | Ergebnis ist immer noch JSON? | Werkzeug |
|---|---|---|---|
| minimieren | Entfernt Leerraum zwischen Token | Ja, gleiche Daten | JSON-Minifier |
| Verschönern / formatieren | Fügt Einrückungen und Zeilenumbrüche hinzu | Ja, gleiche Daten | JSON-Formater |
| Entkommen | Kodiert Text, um in einer JSON-Zeichenfolge zu sitzen | Es wird ein String-Wert | JSON-Flucht / Unentkommen |
| Css minimieren | Entfernt Leerzeichen aus einem Stylesheet | Es ist CSS, nicht JSON | CSS-Minifizierer |
| HTML minimieren | Entfernt Leerzeichen von Markup | Es ist HTML, nicht JSON | HTML-Minifire |
Die gleiche Minify-for-Shipping-Idee läuft formateübergreifend, weshalb die CSS-Minifizierer und HTML-Minifire Setzen Sie sich direkt neben diese - ein vollständiger Build minimiert die JSON-Daten, das Stylesheet und das Markup aus den gleichen Bandbreitengründen.
Ändert die Minifizierung von JSON jemals meine Daten?
Die richtige Antwort ist, dass Minifizieren sollte Niemals Ihre Daten ändern, und ein gutes Werkzeug garantiert es Aber es gibt eine Subtilität, die einen sorgfältigen Minifier von einem naiven trennt, und es ist verständnisvoll, weil es Sie beißen kann.
Viele Minifier funktionieren, indem sie das JSON in ein In-Memory-Objekt analysieren und es dann ohne Leerzeichen neu serialisieren. Diese Hin- und Rückfahrt ist praktisch, aber sie bedeutet, dass jeder Wert unterwegs durch die Sprache und #39;s geht. Zahlentyp, und das kann neu schreiben, wie Zahlen sind Geschrieben Auch wenn der mathematische Wert unverändert ist Ein Wert, als den Sie geschrieben haben 1.0 Kommt zurück als 1. Ein Wert wie 1e3 Kommt zurück als 1000. Eine ganze Zahl mit mehr Ziffern als die Sprache' s Zahlentyp kann präzise halten - alles jenseits von etwa sechzehn signifikanten Ziffern - kann subtil verändert zurückkommen Bei den meisten Dokumenten spielt das alles keine Rolle, aber wenn Ihr JSON Versionszeichenfolgen, Datenbankkennungen oder Festpräzisionsdezimalstellen als Zahlen trägt, kann ein Reparse-and-Restringify-Minifier sie leise beschädigen.
der JSON-Minifier Vermeidet die Falle, indem sie anders minimiert Es ist immer noch Validiert Ihre Eingabe durch Parsen, so fehlerhaft JSON wird gefangen und gemeldet Aber um die Ausgabe zu erzeugen, entfernt es Leerzeichen direkt aus Ihrem Originaltext, anstatt ein analysiertes Objekt erneut zu serialisieren, was bedeutet, dass jedes numerische Token genau so erhalten bleibt, wie Sie es geschrieben haben. Ein Nachlauf-Null 1.0 Aufenthalte 1.0; Eine dreißigstellige ganze Zahl behält alle dreißig Ziffern bei. Sie erhalten die Größenreduzierung der Minifizierung, ohne dass das Risiko besteht, dass Ihre Zahlen umgeschrieben werden - das Beste aus Validierung und Byte-für-Byte-Treue. Bei der Verschönerung der Richtung geht es eher um Lesbarkeit als um Transport. Die Formatierung wird durch eine Standard-Neuserialisierung normalisiert, was das erwartete Verhalten ist, wenn Sie für menschliches Lesen neu formatieren.
Wie lese ich die Fehler, wenn mein JSON nicht minimiert wird?
Das Tool validiert, bevor es minimiert wird, was bedeutet, dass ein fehlerhaftes Dokument einen Fehler und keine fehlerhafte Ausgabe erzeugt - und dieser Fehler ist eine Funktion, kein Hindernis. Es zeigt Ihnen, dass das JSON ein echtes Problem hat vor Sie versenden es an einen Ort, der es weniger hilfreich ablehnen würde.
Die Nachrichten kommen direkt vom JavaScript JSON-Parser und benennen normalerweise eine Position. Die häufigsten Ursachen sind ein nachgestelltes Komma nach dem letzten Element eines Arrays oder Objekts, was strenges JSON verbietet; ein Schlüssel, der nicht in doppelte Anführungszeichen gewickelt ist, da JSON im Gegensatz zu JavaScript-Objektliteratur zitierte Schlüssel benötigt; eine Zeichenfolge, die einzelne Anführungszeichen anstelle von Doppelzeichen verwendet; und eine unausgeglichene Klammer oder Klammer, in der etwas geöffnet und nicht geschlossen wurde. Jedes davon ist eine kleine Korrektur, sobald Sie wissen, wo Sie suchen müssen, und die gemeldete Position weist Sie auf die Nachbarschaft hin. Wenn Ihre Quelle tatsächlich JSONC - JSON mit Kommentaren und Nachlaufendung konvertiert, wie in einigen Konfigurationsdateien verwendet.
Wenn die Struktur gültig ist, Sie aber nicht sehen können wieso Zwei Dokumente verhalten sich unterschiedlich, verschönern beide und vergleichen sie, oder führen sie durch die json diff Werkzeug, um genau zu sehen, welche Schlüssel oder Werte sich unterscheiden Das Debuggen von JSON ist in seiner hübschen Form viel einfacher, was der alltägliche Fall ist, den ich in der JSON-Formatierer-Leitfaden. Und weil all diese Validierung und Minifizierung in Ihrem Browser geschieht, ohne dass etwas hochgeladen wurde, können Sie Payloads, die API-Schlüssel, Token oder Kundendatensätze enthalten, sicher einfügen - das Datenschutzargument, das ich vollständig in der dargelegt habe Leitfaden zur Datenprivatisierung für Online-Toolsdrohen
Ein funktionierendes Beispiel: von der lesbaren Konfiguration zur versendeten Nutzlast
Hier ist die Hin - und Rückfahrt, die zeigt, wie das Tool seinen Platz verdient Angenommen, Sie haben eine Dienstkonfiguration von Hand bearbeitet, also ist es ziemlich gedruckt, um die Lesbarkeit zu gewährleisten - Objekttasten auf ihren eigenen Zeilen, Zwei-Raum-Einrückung, eine leere Struktur, die leicht zu scannen ist Bevor es in eine Umgebungsvariable mit einer Längenbeschränkung geht, möchten Sie es so klein wie möglich haben.
Fügen Sie die Konfiguration in die ein JSON-Minifier, klicken Sie auf Minify, und es bricht zu einer einzigen Zeile zusammen Das Größenabzeichen könnte etwa 512 Bytes bis hinunter zu 340 lesen, eine Reduzierung um ein Drittel, was der Unterschied zwischen dem Anpassen der Variablen' s-Grenze und nicht ist Kopieren Sie die minifizierte Zeile direkt in Ihre Umgebungsdatei Beachten Sie, dass ein Timeout, als das Sie geschrieben haben 1.5 Ist noch 1.5 und eine Wiederholungszahl von 3 Ist noch 3 - die Zahlen sind unberührt, und wenn Sie eine lange numerische Kennung hätten, würde sie auch intakt bleiben, da das Tool den Leerraum entfernt hat, anstatt die Werte erneut zu teilen.
Wochen später lässt ein Fehlerbericht Sie auf denselben minifizierten Klecks in einem Protokoll starren, und er ist nicht lesbar als eine dichte Linie Fügen Sie ihn wieder in das Werkzeug ein, klicken Sie auf Verschönern, wählen Sie zwei Leerzeichen aus, und er erweitert sich in die eingerückte Form, die Sie tatsächlich scannen können Fixieren Sie den Wert, minifizieren Sie ihn erneut, versenden Sie ihn erneut. Dieser bidirektionale Fluss - verschönern, um zu lesen und zu bearbeiten, minifizieren, um ihn zu speichern und zu senden - ist der tägliche Rhythmus, und beides an einer Stelle mit einer Größenauslesung und einer genauen Fehlermeldung zu haben, macht es schnell. Für die breitere Reihe von Build-and-Ship-Utilities, sitzt dies zwischen, dem Webentwickler-Toolkit Rundet den Rest auf.
Häufig gestellte Fragen
Wie minifiziere ich JSON online? Fügen Sie Ihren JSON in den Eingabebereich ein und klicken Sie auf Minify Das Tool entfernt alle Leerzeichen-Außenzeichenfolgenwerte und zeigt das komprimierte Ergebnis zusammen mit der Größeneinsparung an Alles läuft in Ihrem Browser, es wird also nichts hochgeladen.
Ändert die Minifizierung von JSON die Daten? No. Minifying entfernt nur den Leerraum zwischen Token, so bleiben die Schlüssel, Werte und ihre Reihenfolge identisch Ein minifiziertes Dokument analysiert genau das gleiche Objekt oder Array wie das ursprünglich hübsch gedruckte.
Warum JSON überhaupt minifizieren? Minified JSON ist kleiner, überträgt also schneller über das Netzwerk, verbraucht weniger Bandbreite und analysiert etwas schneller API-Antworten, Konfigurationsdateien und in Web-Apps gebündelte Daten werden aus diesen Gründen in der Produktion normalerweise minimiert.
Bewahrt dieses Tool die Zahlenformatierung wie 1,0 oder große ganze Zahlen? Ja. Weil es Leerzeichen streift, anstatt Werte neu zu teilen, werden numerische Token genau so gehalten, wie Sie sie geschrieben haben Ein Wert wie 1,0 bleibt 1,0 und eine sehr große ganze Zahl behält alle ihre Ziffern, die ein Parse-and-Restringify-Minifier umschreiben würde.
Was ist der Unterschied zwischen der Verminifizierung und Verschönerung von JSON? Durch die Minimierung wird Leerraum entfernt, um JSON für Maschinen so klein wie möglich zu machen, während durch die Verschönerung Einrückungen und Zeilenumbrüche hinzugefügt werden, um es für Menschen lesbar zu machen. Dieses Tool tut beides: Minifizieren für den Versand, Verschönern für die Bearbeitung und das Debuggen.
Kann es JSON mit Kommentaren oder nachgestellten Kommas minimieren? Nr. Standard-JSON erlaubt keine Kommentare oder nachgestellte Kommas, daher meldet das Tool diese als Fehler während der Validierung Entfernen Sie zuerst Kommentare und nachfolgende Kommas oder konvertieren Sie Ihren JSONC in strenges JSON und minifizieren Sie dann.
Ist es sicher, sensibles JSON hier zu minifizieren? Ja. Alle Verarbeitung geschieht in JavaScript innerhalb Ihres Browsers, so dass kein JSON an einen Server gesendet wird, nichts protokolliert wird und das Tool mit deaktivierter Verbindung funktioniert Sie können Payloads, die API-Schlüssel oder persönliche Daten enthalten, sicher minifizieren.
Warum zeigt mein JSON einen Fehler an, anstatt zu minimieren? Das Tool validiert Ihre Eingabe vor dem Minifizieren, sodass ein Fehler bedeutet, dass der JSON fehlerhaft ist, normalerweise ein fehlendes oder zusätzliches Komma, ein nicht zitierter Schlüssel, eine einfach zitierte Zeichenfolge oder eine unausgeglichene Klammer. Die Nachricht enthält die Position des Problems, damit Sie es beheben können.
Dieser Leitfaden begleitet die kostenlose JSON-Minifier Tool auf Toolz.dev - keine Anmeldung, keine Uploads, funktioniert offline.



