Zeilen im Quelltext und im Wert sind unterschiedlich
In einem JSON-String codiert ein Backslash mit n einen Umbruch. Zwei Backslashes lassen einen Backslash und n als zwei Zeichen im geparsten Wert stehen. Beide Beispiele sind gültig, doch die text-Werte haben die Längen 3 und 4.
{"text":"A\nB"}
{"text":"A\\nB"}
JSON.parse('{"text":"A\\nB"}').text.length // 3
JSON.parse('{"text":"A\\\\nB"}').text.length // 4Ein echter Umbruch innerhalb eines Strings ist ein Fehler
RFC 8259 verlangt Escape-Sequenzen für Steuerzeichen U+0000 bis U+001F in Strings, einschließlich eines echten LF. Zwischen Tokens sind LF, CR, Tabs und Leerzeichen erlaubt. Im Test wurde LF im String abgelehnt, ein mehrzeiliges Objekt dagegen akzeptiert.
const invalid = '{"text":"A' + '\n' + 'B"}';
formatJSON(invalid); // throws
formatJSON('{\n"text":"AB"\n}'); // acceptedFormatierung und Wertinterpretation trennen
Moyoutil erhält String-Tokens und verändert die äußere Einrückung. Es stellt \n nicht als echten Umbruch innerhalb des Werts dar. Auch beim Minifizieren bleiben Escapes erhalten. Prüfe bei Fehlern Anführungszeichen und Backslashes nahe der gemeldeten Stelle. Pauschal hinzugefügte Backslashes können korrekte Werte verändern.
Führe Formatierung und Prüfung mit den Beispielen aus und vergleiche die minifizierte Ausgabe. Serialisiere Werte mit Umbrüchen bei der JSON-Erzeugung mit JSON.stringify und prüfe den Wert mit JSON.parse. Eine Syntaxprüfung prüft keine Pflichtfelder eines API-Schemas.
Häufig gestellte Fragen
Entfernt Minifizieren Umbrüche in den Werten?
Nein. Es reduziert Leerraum außerhalb von Strings. Das Tool erhält die Escapes, daher bleiben Umbrüche in den geparsten Werten erhalten.