Die Grenzen der Konvertierung JSON ↔ YAML und XML
Die Behauptung, JSON sei eine Teilmenge von YAML, garantiert nur eine Richtung, und XML hat überhaupt keine offizielle JSON-Abbildung – alles ruht auf Konvention.
Die Konvertierung zwischen JSON und YAML, XML, CSV, TypeScript, Java, Go und SQL ist nie verlustfrei. Entscheidend ist, ausdrücklich zu wissen, wo der Verlust entsteht.
8 ArtikelDie Behauptung, JSON sei eine Teilmenge von YAML, garantiert nur eine Richtung, und XML hat überhaupt keine offizielle JSON-Abbildung – alles ruht auf Konvention.
CSV ist zweidimensional, JSON baumförmig. Das Schwierige an der Konvertierung ist nicht der Code, sondern vorab zu entscheiden, wie Arrays abgeflacht und wie Typen erhalten werden.
Verschachtelte Strukturen, uneinheitliche Felder und Arrays von Arrays sind die Stellen, an denen die Konvertierung von JSON nach Excel bricht. Vier Wege, nach Zeit bis zum Ergebnis sortiert, jeder mit Abwägungen.
JSON in SQL-INSERT zu verwandeln verbirgt das Aufteilen verschachtelter Tabellen, NULL versus fehlend, Escaping und Dialektlücken. Lauffähige Statements und Vergleichstabellen zu jeder Falle.
Aus Beispiel-JSON ein Interface zu generieren ist die halbe Arbeit: optionale Felder, null, Unions, Daten und große Ganzzahlen brauchen einen menschlichen Durchgang, und Typen validieren zur Laufzeit nichts.
Der am häufigsten kopierte Befehl aus Tutorials, yq -P input.json > output.yaml, gibt unter yq v4 immer noch JSON aus. Dieser Artikel misst yq v4.44.6, PyYAML 6.0.3 und js-yaml an einem 2.39 MB großen Beispiel, erklärt, warum die Eingabeendung das Ausgabeformat bestimmt, und zeigt die korrekten Schreibweisen für Massenkonvertierung, Quoting, Einrückung und die Präzision großer Ganzzahlen.
Neun Experimente an einem echten Konverter: Die Strategie „Schlüssel der ersten Zeile" verliert Felder stillschweigend, null, fehlend und Leerstring werden alle zu leeren Zellen, eine 20-stellige Ganzzahl verliert ihre Präzision schon bei JSON.parse, und ein Punkt in einem Schlüssel lässt zwei verschiedene Pfade in derselben Spalte kollidieren. Wie der Spaltenkopf entsteht, welche Werte sich verändern und wie Sie eine Strategie nach dem nachgelagerten Zweck wählen.
Ein praxisnaher Blick darauf, was ein JSON-zu-Java-Generator wirklich ausgibt——Zahlen werden Double, verschachtelte Objekte werden statische innere Klassen, und nicht eine einzige Jackson-Annotation wird erzeugt. Geldgenauigkeit, Umbenennung von Feldern, Typlöschung, unbekannte Felder und Datumsangaben sind die fünf Dinge, die Sie selbst ergänzen müssen – mit Copy-Paste-Code für jedes.