Daten und Tabellen · CSV Reiniger
Konvertieren zwischen CSV und JSON: Formen, Typen und was verloren geht
· Wie es funktioniert
csv json Datenformate
CSV ist flacher Text und JSON sind verschachtelte, typisierte Daten, sodass die Konvertierung zwischen ihnen Entscheidungen erfordert. In diesem Beitrag werden die gängigen JSON-Formen für Tabellendaten erläutert, wie Typen abgeleitet werden oder nicht und was den Roundtrip nicht überleben kann.
Eine API möchte JSON, der Export ist CSV und jede Zahl kommt als Zeichenfolge an – warum die beiden Formate hinsichtlich der Typen unterschiedlich sind
Ein Tabellenkalkulationsexport kann 42 anzeigen, ohne anzugeben, ob diese Zeichen eine Anzahl, einen Produktcode oder eine Kennung bedeuten. JSON kann eine Zahl von einer Zeichenfolge unterscheiden, aber die Quelle CSV kann diese Unterscheidung nicht liefern. ToolAcre wählt daher die konservative Darstellung: Jede Zelle wird zu einer JSON-Zeichenfolge, einschließlich Ziffern, wahrheitsgetreuen Wörtern und leeren Zellen.
Durch diese Entscheidung bleibt Text wie 0012 intakt und macht die Konvertierung für eine API-Integration vorhersehbar. Dies bedeutet auch, dass nachgelagerter Code Felder nach seinem eigenen Schema umwandeln muss, bevor er Arithmetik durchführt. Die Behandlung der generierten Datei als bereits typisiert verschiebt lediglich eine Annahme des Konverters in weniger sichtbaren Anwendungscode.
Die übliche Zielform – ein Array von Objekten, die nach Header kodiert sind, und warum Header daher sauber und eindeutig sein müssen
Die Route erzeugt ein Array der obersten Ebene mit einem Objekt für jede Datenzeile. Kopfzellen werden zu Objektschlüsseln und Werte werden von denselben Spaltenpositionen übernommen. Ein leerer dritter Header wird zu Column_3, während ein zweiter Header mit dem Namen „id“ zu „id_2“ wird, anstatt das erste ID-Feld zu überschreiben.
Saubere, eindeutige Namen sind nützlich, aber der Konverter schreibt keine Kleinbuchstaben, transkribiert oder ersetzt Leerzeichen. Es schneidet nur einen Header ab, während der Schlüssel berechnet wird, und erfindet dann bei Bedarf einen Positionsnamen oder ein numerisches Suffix. Wenn eine API „customer_email“ anstelle von „Customer Email“ erfordert, benennen Sie diese Spalte bewusst um, bevor Sie sich auf den Ausgabevertrag verlassen.
Alternative Formen – Array aus Arrays und spaltenorientierten Objekten und wann jede davon besser passt
Die Gliederung schlug Arrays aus Arrays und spaltenorientierten Objekten als auswählbare Ziele vor. Es handelt sich um vernünftige Datendesigns, die diese Schnittstelle jedoch nicht bietet. Seine Ausgabe ist immer ein JSON-Array aus flachen Datensätzen, die durch die erste CSV-Zeile verschlüsselt und zur besseren Lesbarkeit mit zwei Leerzeichen eingerückt sind.
Diese enge Auswahl beseitigt Unklarheiten darüber, wo sich ein Spaltenname befindet, und sorgt dafür, dass alle Datensätze gleich geformt sind. Wenn ein anderer Verbraucher Arrays erwartet, transformieren Sie das heruntergeladene JSON unter dem Schema dieses Verbrauchers. Die Behauptung, dass ToolAcre zwischen mehreren Layouts wählt, würde Steuerelemente und Zweige beschreiben, die in der Konfiguration oder im Panel-Code nicht vorhanden sind.
Dieser Konverter gibt eine Form aus: ein Array flacher Objekte auf oberster Ebene
Es findet keine Typschätzung statt. Der CSV-Text 42 wird zu „42“, „false“ wird zu „false“ und ein Leerzeichen wird zu „“ statt null. Dies wird im Werkzeugdatensatz und in der Implementierung explizit deutlich, die Zellen direkt den Zeichenfolgeeigenschaften zuordnen. Die Route prüft keine Spalte und entscheidet nicht, dass alle nicht leeren Werte numerisch sind.
Die Beibehaltung von Zeichenfolgen trennt diesen Artikel auch von der veröffentlichten Diskussion über Tabellenkalkulationsanwendungen, die führende Nullen, Datumsangaben und lange Bezeichner ändern. Hier geht es um den eigentlichen Vertrag des Konverters: Er vermeidet diese Art von Zwang. Verbraucher bleiben dafür verantwortlich, bekannte Mengen zu analysieren und Identifikatoren unangetastet zu lassen.
Typen bleiben als Text erhalten; ToolAcre führt keine Inferenz durch
In umgekehrter Richtung akzeptiert ToolAcre ein JSON-Array der obersten Ebene, dessen Elemente Objekte sind. Es erstellt Spalten aus der Vereinigung von Schlüsseln für jedes Objekt in der zuerst angezeigten Reihenfolge, sodass ein durch einen späteren Datensatz eingeführtes Feld nicht verloren geht. Fehlende, Null- und undefinierte Eigenschaften werden zu leeren CSV-Zellen.
Ein in einer Eigenschaft gespeichertes Objekt oder Array wird als JSON-Text in dieser einen Zelle serialisiert. Dadurch bleibt eine Textdarstellung erhalten, die verschachtelte Struktur wird jedoch nicht in zusätzliche Spalten oder Zeilen umgewandelt. Ein Nicht-Array-Stamm und ein Array mit primitiven Werten werden abgelehnt, da keines von beiden mit dem von dieser Route unterstützten Tabellenmodell übereinstimmt.
JSON-to-CSV akzeptiert ein Array von Objekten und schreibt verschachtelte Werte als JSON-Text
Betrachten Sie name,active,count gefolgt von Ada,true,007. Das JSON-Ergebnis ist ein Array, das ein Objekt mit dem Namen „Ada“, aktiv „true“ und der Anzahl „007“ enthält. Die Rückkonvertierung dieses flachen Objektarrays erzeugt dieselben drei Textzellen, da keine Typinferenz die Nullen entfernt oder das boolesch aussehende Wort konvertiert hat.
Fügen Sie nun vor einem anderen Wert eine leere Kopfzeile hinzu. Der Schlüssel JSON wird zu Spalte_4, sodass die Daten auch dann erreichbar bleiben, wenn der Quellname fehlt. Fügen Sie jedoch eine zusätzliche Zelle über die Kopfzeilenbreite hinaus hinzu, und der Lader warnt vor einer unregelmäßigen Zeile; Diese überschüssige Zelle hat keinen Schlüssel und fehlt in JSON.
Was dies nicht abdeckt – tief verschachtelte JSON, Schemavalidierung und Streaming sehr großer JSON-Dokumente
Die Route ist kein Schema-Validator, kein rekursiver Flattener oder Streaming-JSON-Prozessor. Es akzeptiert eine dokumentierte Form und meldet ungültige JSON oder nicht unterstützte Wurzeln mit einem bestimmten Fehler. Tief verschachtelte Datensätze benötigen eine Zuordnung, die auf ihre Domäne zugeschnitten ist, und nicht das automatische Versprechen, dass Satzzeichen in einem Schlüssel eine Struktur schaffen.
Die Eingabedateiprüfung lässt Dateien bis zum konfigurierten 50 MB zu, und das Parsen von CSV erfolgt in einem Worker. Diese Tatsachen begründen kein Streaming: Dateitext und abgeschlossene Zeilen werden weiterhin für die Konvertierung materialisiert. Verwenden Sie für sehr große JSON-Workflows ein System, dessen Implementierung die inkrementelle Analyse explizit dokumentiert, anstatt sie hier abzuleiten.
Schemavalidierung, primitive Arrays und Nicht-Array-Wurzeln liegen außerhalb der akzeptierten Form
Bei der Konvertierung handelt es sich um eine sichtbare Reihe von Auswahlmöglichkeiten: erste Zeile als Schlüssel, flache Objekte als Datensätze und Zeichenfolgen als Werte. ToolAcre macht diese Entscheidungen stabil, anstatt sie anhand einer Stichprobe zu erraten. Leere und wiederholte Header erhalten deterministische Schlüssel, während unvollständige Eingaben angezeigt werden, bevor ein unbenannter Mehrwert unbemerkt verschwinden kann.
Verwenden Sie die Vorschau, um das Trennzeichen und die Zeilenform zu bestätigen, Warnungen zu beheben und dann JSON herunterzuladen oder zu kopieren. Die resultierende Datei ist für Code geeignet, der sein eigenes Schema kennt. Es ist absichtlich kein Ersatz für dieses Schema, und seine Beschränkung schützt Text-IDs während der Formatänderung.