Deutsch

Entwicklertools · Syntaxkonverter

CSV bis JSON und JSON bis CSV: Header, Zeichenfolgenwerte und Reduzierung

· Wie es funktioniert

json csv Datenformate

Ein verschachtelter JSON-Baum, der in eine Richtung in gepunktete CSV-Spalten abgeflacht wird
Original-ToolAcre-Vektorillustration

CSV ist flach, typlos und hinsichtlich seines eigenen Trennzeichens nicht eindeutig, während JSON verschachtelt und typisiert ist. Dieser Beitrag zeigt, wie ein Konverter Zeilen Objekten und umgekehrt zuordnet und wo Informationen in jede Richtung verloren gehen.

Jede Zahl kam in Anführungszeichen zurück – der CSV-Export wurde in JSON konvertiert, wobei 42 zu „42“ wurde und die Postleitzahl ausnahmsweise ihre führende Null behielt

Die Arbeitsmappe fragt nach CSV-bis-JSON-Beispielen, aber ToolAcre liest nie CSV. Die Engine kündigt genau neun gerichtete Paare an und keines beginnt mit CSV. Das Lesen einer Datei würde Entscheidungen über Trennzeichen, Anführungszeichen, Vorhandensein von Headern und Zelltypen erfordern; Dieses Gremium weigert sich, vier stille Vermutungen anzustellen. Der korrigierte Artikel dokumentiert daher die versendete Richtung von JSON nach CSV.

Diese einseitige Entscheidung ist sowohl in der Benutzeroberfläche als auch in den Fehlern sichtbar. CSV erscheint als Ziel, nicht als Quelle, und der umgekehrte Versuch gibt `UNSUPPORTED_CONVERSION` mit dem Hinweis zurück, ein Tool zu verwenden, das nach Dialekt und Typen fragt. Ein Titel, der beide Richtungen suggeriert, würde das Produkt falsch darstellen, selbst wenn das allgemeine Thema anderswo üblich wäre.

CSV wird hier nicht gelesen: Beginnen Sie mit dem JSON-zu-CSV-Pfad, den das Tool tatsächlich versendet

Ein Root-Array JSON liefert die Zeilen. Ein einfaches Objekt wird zu einer Zeile. Ein Objekt, dessen einziger Schlüssel ein Array enthält, entpackt dieses Array und warnt, dass es die benannte Eigenschaft verwendet hat. Objekte mit zusätzlichen Geschwisterschlüsseln werden nicht entpackt, da dadurch diese Geschwister verworfen oder dupliziert würden.

Jeder ausgewählte Datensatz wird reduziert, bevor die Spalten erfasst werden. Datensätze können sogar Skalare innerhalb eines Arrays sein; diese verwenden eine `value`-Spalte. Ein bloßer Skalar im Dokumentstamm wird abgelehnt, da eine Zeichenfolge oder Zahl keine Tabelle mit Datensätzen und Feldern definiert.

Auswahl von Datensätzen aus JSON: Arrays, einzelne Objekte und Ein-Schlüssel-Array-Wrapper Die Typen

JSON bleiben nur als Zellentext erhalten. Boolesche Werte werden zu `true` und `false`, Zahlen verwenden ihre Dezimaldarstellung und Null wird zu einer leeren Zelle. CSV kann diese Null nicht von der leeren Zeichenfolge unterscheiden, daher zählt der Writer Nullen und warnt vor der Mehrdeutigkeit, anstatt das Ergebnis äquivalent aufzurufen.

Breite Ganzzahlen unterliegen bereits vor dieser Phase dem JSON-Parsing, sodass ein unsicheres numerisches Literal möglicherweise an Präzision verloren hat. Wenn Sie einen Bezeichner in Anführungszeichen setzen, bleibt sein Text erhalten. Formelähnliche Zeichenfolgen erhalten standardmäßig ein zusätzliches Apostroph, wenn sie mit `=`, `+`, `-`, `@`, Tabulator oder Wagenrücklauf beginnen; Die tatsächliche Zahl `-5` bleibt eine Zahl und wird nicht vorangestellt.

Warum die Ausgabe von CSV die Typen JSON nicht beibehalten kann

Spalten sind die Vereinigung abgeflachter Schlüssel in der zuerst angezeigten Reihenfolge. Wenn eine Zeile `a` und eine andere `b` enthält, enthält die Ausgabe beide Spalten und füllt jedes fehlende Feld mit einer leeren Zelle auf. Eine Warnung meldet unregelmäßige Zeilen, anstatt Werte unter den falschen Überschriften zu verschieben.

Das Sortieren von Objektschlüsseln wird nicht auf CSV angewendet; Die Regel des Autors ist das erste Erscheinen in allen Datensätzen. Das macht ein Beispiel für eine feste JSON-Eingabe stabil, es handelt sich jedoch nicht um einen Schemavertrag. Ordnen Sie Quellschlüssel bewusst an oder bearbeiten Sie den Header nach, wenn für einen nachgelagerten Import eine vorgeschriebene Reihenfolge erforderlich ist.

Reduziert verschachtelte Daten – Punktpfade wie Adresse.Stadt, Arrays als indizierte Spalten oder verbundene Zeichenfolgen und der Punkt, an dem CSV die Form einfach nicht halten kann

Verschachtelte Objektschlüssel werden mit einem Punkt verbunden: `address.city`. Arrays verwenden dasselbe Trennzeichen und dieselben numerischen Indizes: `tags.0`, `tags.1`. Leere Objekte und Arrays behalten eine leere Zelle auf ihrem eigenen Pfad, anstatt zu verschwinden. Dies erzeugt ein Rechteck und gibt gleichzeitig zu, dass ein Baum in Namen projiziert wurde.

Ein Quellschlüssel, der bereits einen Punkt enthält, ist mit einem verschachtelten Pfad nicht eindeutig. ToolAcre erkennt und warnt, erfindet jedoch keine Escape-Syntax, die Tabellenkalkulationen nicht verstehen würden. Tiefe oder lange Arrays können auch die Spaltenobergrenze von 2,000 überschreiten, wobei die Konvertierung abgelehnt wird, anstatt eine Tabelle auszugeben, die normale Tabellenkalkulationssoftware nicht verwenden kann.

Funktioniertes Beispiel: eine Kundenliste in beide Richtungen – CSV zu JSON, Bearbeitung eines verschachtelten Felds und JSON zurück zu CSV mit reduzierter Verschachtelung

Verwenden Sie `[ {"id":"0042","address":{"city":"Oslo"},"tags":["new","west"],"note":"=1+1"}, {"id":"0043","address":{"city":"Lima"},"tags":[],"note":null} ]`. Zu den Kopfzeilen gehören ID, Adresse.Stadt, Tags.0, Tags.1 und Notiz. Die zweite Zeile erhält Leerzeichen für fehlende Tag-Indizes, und ihre Nullnotiz ist nicht von leerem Text zu unterscheiden.

Der ersten Notiz wird ein Apostroph vorangestellt, sodass sie in einer Tabellenkalkulation als Text behandelt wird. Datensätze enden mit CRLF, Felder mit Trennzeichen, Anführungszeichen oder Zeilenenden werden in doppelte Anführungszeichen gesetzt und eingebettete Anführungszeichen werden verdoppelt. Durch Auswahl von Semikolon oder Tabulator ändert sich das Trennzeichen. Für Verbraucher, die diese benötigen, kann eine optionale Stückliste UTF-8 hinzugefügt werden.

Arbeitsbeispiel: ein verschachteltes Kunden-Array, das einmal auf CSV reduziert wurde

Fehlerhaft oder mehrdeutig codiert. CSV liegt außerhalb dieser Route, da kein CSV in sie eintritt. Der CSV Cleaner ist der Ort zum Auswählen oder Erkennen von Dialekt- und Reparaturangeboten. Hier ist die Quelle strikt JSON und die Ausgabe folgt den dokumentierten Schreibkonventionen.

Der Konverter begrenzt auch die Ausgabe auf 100,000 Zeilen und 2,000 Spalten. Leere Arrays werden abgelehnt, da eine Datei ohne Header oder Zeile keine Tabellenform hat. Bei diesen Grenzwerten handelt es sich um erzwungene Codepfade, nicht um Leistungsversprechen, und der Artikel erfindet keine Durchsatzzahlen.

Fazit: CSV ist eine Tabelle, JSON ist ein Baum – und wie sich das Syntaxkonverter-Bedienfeld zwischen ihnen bewegt, ohne die Zeilen hochzuladen

JSON ist ein typisierter Baum; CSV ist eine Texttabelle. ToolAcre wählt Zeilen aus, glättet Pfade, vereint Spalten, setzt Felder in Anführungszeichen und neutralisiert gefährlichen Text, kann jedoch weder Null-Leer-Verhältnisse beibehalten noch die Verschachtelung später wiederherstellen. Bei diesen Verlusten handelt es sich eher um strukturelles als um formatierendes Rauschen.

Verwenden Sie diese Richtung, wenn die tabellenförmige Ausgabe das beabsichtigte Artefakt ist. Wenn Sie CSV-to-JSON benötigen, wählen Sie einen Reader, der nach Trennzeichen, Header und Typen fragt. Das Gegenteil abzulehnen ist sicherer, als überzeugende JSON zurückzugeben, die auf nicht überprüften Vermutungen basieren.