Command Palette

Search for a command to run...

CSV zu JSON: Die Typinferenz fressen Ihre Postleitzahlen

CSV zu JSON: Die Typinferenz fressen Ihre Postleitzahlen

T
Toolz Team
|Jul 7, 2026|16 min lesen

Teil der Sammlung Datenwerkzeuge

CSV-zu-JSON-Konverter

Konvertieren Sie CSV online in JSON. Parsts zitierte Felder und jeden Trennzeichen, inferiert Zahlen und booleans, und gibt ein Array von Objekten aus. 100% client-seitig, kein Signup.

CSV-zu-JSON-Konverter verwenden

Ein Kunde hat mir einen 12.000-reihigen Kundenexport geschickt, der in eine Staging-Datenbank geladen wird. Ich habe es umgebaut, importiert und versendet. Zwei Tage später fragte ihr Ops-Lead, warum einige hundert Kunden in New Jersey vierstellige Postleitzahlen hatten.

07102 war geworden 7102. Jeder Zip, der mit einer Null beginnt, quer durch die ganze Datei, leise amputiert Nicht durch einen Fehler - durch ein Feature Type inference angesehen 07102, sah etwas, das "eine Zahl" übereinstimmte und es hilfreich in eine umwandelte. Führende Nullen sind keine Sache, die Zahlen haben.

Ich habe das gebaut CSV-zu-JSON-Konverter Auf Toolz.dev, und das tut es auch. Ich werde Ihnen genau zeigen, wo genau, denn ein Konverter, der Ihre Daten lautlos ändert, ist gefährlicher als einer, der einfach fehlschlägt.

tl; dr: der CSV-zu-JSON-Konverter Verwandelt eine CSV in ein Array von Objekten, wobei die erste Zeile als Schlüssel verwendet wird und vollständig in Ihrem Browser ausgeführt wird. es Verweist immer auf Typen Und Sie können & #39; t das in der Benutzeroberfläche ausschalten - was bedeutet 071027102, 1250.501250.5, leere Zellen → null, und true/false → Boolesche. Big Integers über 2⁵³ bleiben Strings, wodurch Ihre Twitter-IDs gespeichert werden. Komma-only In der Benutzeroberfläche, so Semikolon-CSVs aus European Excel won' t analysieren Doppelte Header sind eher ein harter Fehler als ein stummes Überschreiben - dass one' eine echte Verbesserung gegenüber den meisten Parsern darstellt Überprüfen Sie die Ausgabe, bevor Sie importieren, und verwenden Sie die JSON-Formater zu augen.


Was macht dieser Konverter eigentlich mit Ihren Daten?

Jeder Wert in einer CSV ist Text. 29 sind die Zeichen 2 und 9drohen JSON hat echte Typen, also muss ein Konverter entscheiden: 29 die Zahl 29 oder die Zeichenfolge "29"; Es gibt im Allgemeinen keine richtige Antwort, und jeder CSV-Parser rät.

Dieser rät. immer. Hier ist der vollständige Regelsatz, direkt aus dem Code und durch Ausführen:

CSV-Wert JSON-Ausgabe Typ
29 29 Zahl
07102 7102 Zahl - Null weg
1250.50 1250.5 Zahl - Cent weg
true / TRUE true boolesch
null / NIL null ungültig
(leere Zelle) null ungültig
9007199254740993 "9007199254740993" Schnur
1e3 1000 Zahl
+5 "+5" Schnur
.5 ".5" Schnur
NO "NO" Schnur
+8801712345678 "+8801712345678" Schnur
2024-01-05 "2024-01-05" Schnur

Einige davon verdienen einen genaueren Blick, da das Muster nicht offensichtlich ist.

Die Zahl Regex ist streng und das tragend. Es passt ^-?\d+$ Und sonst nichts. Deshalb +5 und .5 Überleben als Strings - kein führendes Plus, kein bloßer Dezimalpunkt It's auch warum +8801712345678- eine bangladeschische Telefonnummer, und ich teste mit meiner - kommt unversehrt durch. Streifen Sie das + Und Sie würden es durch numerische Konvertierung verlieren. Die Strenge der Regex schützt also versehentlich Telefonnummern und nur Telefonnummern, die ihren Ländercode plus behalten.

Große ganze Zahlen werden richtig behandelt, was mich überrascht hat. Alles außerhalb des sicheren Ganzzahlbereichs (± 2⁵³−1) wird absichtlich eher als Zeichenfolge als konvertiert und verstümmelt. Schneeflocken-IDs, Twitter-IDs und 19-stellige Datenbankschlüssel überleben. Die meisten naiven Konverter rufen an parseInt und gib dir 9007199254740992 wo du hattest ...93drohen Dieser überprüft zuerst die Bindung.

NO bleibt eine Schnur- die dem Norwegen-Problem, das YAML-Dateien frisst, leise ausweicht Anderes Format, anderer Parser, aber beachtenswert: der Ländercode NO ist ein Münzflip dafür, wie ein Konfigurations-Parser es behandelt, und hier ist es sicher.

Leer bedeutet NULL, nicht Leerzeichen. Und hier ist ein kleiner Dokumentationsfehler, den ich beim Schreiben gefunden habe: Das Tool 's eigene "Wie es funktioniert" sagt Panel "Leere Werte bleiben als leere Zeichenfolgen in der JSON-Ausgabe erhalten." Sie sind nicht. inferType('') Retouren nulldrohen Der UI-Text ist falsch, der Code ist das, was versendet. Ich repariere die Kopie.


Warum wird 07102 7102 und was mache ich dagegen?

Denn eine Postleitzahl ist keine Nummer und ein Computer kann es nicht sagen.

07102 Passt "Ziffern, optional negativ" an. parseInt("07102", 10) ist 7102. Die führende Null trug Bedeutung - es war Die Daten - und Zahlen haben keine Möglichkeit, sie zu halten Das Gleiche passiert mit:

  • Postleitzahlen: 07102, 01950, alles in New England oder New Jersey
  • Produkt-Skus: 00451
  • Telefonnummern ohne Plus: 0171...
  • Bank-/Routing-Codes, Mitarbeiter-IDs, Beliebiger gepolsterter Bezeichner
  • Geld: 1250.501250.5, und 2100.002100

Mit dem letzten lohnt es sich zu sitzen. 1250.50 und 1250.5 sind die gleiche Zahl und eine andere Zeichenfolge. Wenn Sie Währungen nachgelagert machen, $1250.5 Wird irgendwo in einer Benutzeroberfläche angezeigt, und jemand wird einen Fehler einreichen, der eine Stunde dauert, um auf eine CSV-Konvertierung drei Wochen zuvor zurückzuverfolgen. (Die eigentliche Lektion dort ist, Geld als ganzzahlige Cent oder als Dezimalzeichenfolge zu speichern, niemals als Float - aber das und #39; ist ein Kampf um einen anderen Artikel.)

Im Moment gibt es in diesem Tool Kein Schalter, um die Inferenz auszuschalten. Die zugrunde liegende Funktion nimmt eine inferTypes Option und die Benutzeroberfläche übergeben sie nie, daher ist sie dauerhaft am Standard. Das ist eine Lücke und das oberste Element auf meiner Liste für dieses Tool.

Bis es versendet wird, Ihre Optionen:

  1. Schauen Sie sich die Ausgabe an. Im Ernst - deshalb zeigt das Tool JSON in einem Bereich an, anstatt es nur herunterzuladen Scannen Sie Ihre ID-Spalten Es dauert zehn Sekunden und it' s wie ich die Postleitzahlen hätte fangen sollen.
  2. zitiersicher es vorgelagert. Zitat im CSV won't Hilfe - der Parser streift Zitate und dann Schlüsse also "07102" wird immer noch 7102drohen Machen Sie stattdessen den Wert an der Quelle nicht numerisch: Export als ZIP-07102, oder fügen Sie eine Präfixspalte in der Tabelle hinzu.
  3. Nachbearbeitung. Konvertieren, dann korrigieren Sie die Spalten, die Sie kennen, sind Bezeichner: data.forEach(r => r.zip = String(r.zip).padStart(5, '0'))drohen Hässlich, aber ehrlich und auditierbar.
  4. Verwenden Sie einen echten Parser für echte Pipelines. für alles geplante oder automatisierte, csv-parse oder papa parse in node mit cast: false wird dies richtig machen. Ein Browsertool ist für das Einzelstück.

Was macht der Parser richtig?

I' waren hart daran, also hier's die andere Hälfte - und einiges davon ist wirklich besser als das, was Sie und #39; finden Sie woanders.

Doppelte Header sind ein harter Fehler. es zu füttern a,b,a Und es lehnt ab: Duplicate headers found: a. Die meisten Parser lassen stillschweigend die letzte Spalte gewinnen, so verschwindet eine Datenspalte ohne ein Wort, hier ist der richtige Aufruf nicht laut zu scheitern - man kann nicht zwei Schlüssel mit demselben Namen in einem JSON-Objekt haben, und so zu tun, als ob man etwas anderes hätte, verliert Daten.

Angeführte Felder werden richtig behandeltPro RFC 4180. Kommas in Zitaten bleiben stehen; "" wird wörtlich "drohen Die Beispieldaten werden mit geliefert "Mike, Jr." speziell um es zu beweisen.

Neuheiten in den angegebenen Feldern funktionieren. Hier stirbt meist das handgewalzte CSV-Splitting ab - da spaltet sich jemand auf \n und ein mehrzeiliges Adressfeld detoniert die gesamte Datei. Der Zeilenteiler-Spuren zitieren den Status Charakter für Zeichen, also "line1\nline2" bleibt ein Feld.

Leerzeilen werden übersprungen, so dass nachlaufende Zeilen und die streunenden Zeilen-Excel-Blätter am Ende keine Phantomobjekte erzeugen.

Zerlumpte Reihen stürzen nicht ab. Zu wenige Felder und die fehlenden Schlüssel kommen zurück null; zu viele und die Extras, die Ihre Header-Anzahl überschritten haben, werden stillschweigend fallen gelassen. (Der letzte Teil I' d ruft eher diskutabel als korrekt auf - eine Warnung wäre besser als ein leiser Abwurf.)

Eine RFC-Abweichung, die Sie wissen sollten: Werte werden gekürzt, einschließlich Insider-Angebote. RFC 4180 §2.4 besagt, dass Räume Teil des Feldes sind und nicht ignoriert werden sollten " John " sollte sein " John "drohen Dieses Werkzeug gibt Ihnen "John". That's eine bewusste Bequemlichkeit - 99% der Zeit hinter dem Leerraum in einem CSV ist ein Unfall, den Sie weghaben möchten - aber wenn Sie und #39; sind Rundum-Trip-Daten dort, wo die Auffüllung erheblich ist, it& #39;s ein verlustbehafteter Schritt und die Spezifikation ist nicht auf meiner Seite.


Warum wird mein Semikolon-CSV-Parse nicht durchgeführt?

Denn die Schnittstelle ist nur Komma, und dies fängt jeden europäischen Export ein.

Excel in einem Gebietsschema, das ein Komma verwendet, da das Dezimaltrennzeichen CSVs mit schreibt Semikolons als Feldbegrenzer. Perfekt gültig, extrem häufig, und dieses Tool wird es nicht analysieren. einkleistern a;b und Sie erhalten einen einzigen Schlüssel, der buchstäblich benannt ist a;b Mit dem Wert "1;2". Es tut & #39; t Fehler - es erzeugt nur eine nutzlose Spalte, was schlimmer ist als Fehler.

Die Parsing-Funktion akzeptiert a delimiter Option Die Benutzeroberfläche stellt es nie frei. Gleiche Gap-Klasse wie die Inferenz-Umschaltung.

Problemumgehungen:

  • Finden und ersetzen ;, In einem Texteditor zuerst - sicher nur Wenn kein Feld ein Komma in Anführungszeichen enthält.
  • betreffs -Export aus Excel mit "CSV UTF-8 (Komma-Abgrenzung)" ;
  • Verwenden Sie die CSV-Betrachter Stattdessen - es macht die Abgrenzungserkennung, indem es die Konsistenz der Spaltenanzahl über Kandidaten-Abgrenzer hinweg bewertet, sodass es Ihre Semikolon-Datei liest Es hat gewonnen' t in JSON konvertieren, aber es' zeigt Ihnen, was Sie haben.

Tabs haben das gleiche Problem. Ebenso pfeifenbegrenzt.


Wie konvertiere ich CSV in JSON auf Toolz.dev?

Schritt 1: Öffnen Sie den Konverter

Gehe zum CSV-zu-JSON-Konverterdrohen Die Beispieldaten werden geladen und bereits konvertiert, sodass Sie die Form sofort sehen können.

Schritt 2: Fügen Sie Ihre CSV ein

In den linken Bereich einfügen. da ist Kein Datei-Upload- it's ein Textbereich, also öffnen Sie Ihren .csv in einem Texteditor und kopieren Sie es über. Für ein paar tausend Zeilen ist das in Ordnung. Verwenden Sie für einen Export von 200 MB einen echten Parser.

Ihre erste Zeile muss Kopfzeilen sein, und Sie benötigen mindestens eine Datenzeile. Eine einzelne Zeile kehrt zurück CSV must have at least a header row and one data rowdrohen

Schritt 3: Konvertieren

stoßen an In JSON konvertieren. Sie erhalten ein Array von Objekten, eines pro Zeile, Tasten aus Ihrem Header, eingerückt zwei Leerzeichen Die Zeilenanzahl erscheint über der Ausgabe - überprüfen Sie sie mit dem, was Sie erwartet haben, da es & #39; s der billigste mögliche Sanity-Test ist.

Schritt 4: Lesen Sie die Ausgabe, bevor Sie ihr vertrauen

Der Schritt, den alle überspringen und ich habe einmal übersprungen. Schauen Sie sich Ihre ID-Spalten an. Schauen Sie sich Ihre Geldspalten an. Wenn eine Postleitzahl im JSON unnotiert angezeigt wird, ist dies jetzt eine Nummer.

Schritt 5: Kopieren oder herunterladen

nachbilden Für die Zwischenablage, JSON herunterladen für eine data.json Akte


Wann sollte ich keinen Browser-Konverter verwenden?

Ehrlich über die Grenze sein:

Situation einsetzen
Einmalig, ein paar tausend Reihen CSV zu JSON
sensible Daten, die Sie nicht hochladen können Dies - es verlässt Ihren Browser nie
alles geplant oder automatisiert csv-parse / Papa-Parse im Knoten
Semikolon oder Tab begrenzt CSV-Betrachter, oder befestigen Sie das Trennzeichen
Postleitzahlen, SKUs, gepolsterte IDs Alles mit cast: false
verschachtelte Ausgabe von gepunkteten Headern Ein Skript - das erzeugt nur flache Objekte
100k + Zeilen Streaming-Parser; der Browser hält alles im Speicher
Den anderen Weg gehen JSON zu CSV

Diese "Nested Output" -Reihe ist es wert, klar zu sagen, da ältere Versionen dieses Leitfadens etwas anderes behaupteten: Header wie user.name und address.city anstellen nicht verschachtelte Objekte werden. Sie erhalten ein flaches Objekt mit einem buchstäblich benannten Schlüssel "user.name". There' s keine Punktnotationserweiterung, keine Header-Transformation, keine CamelCase-Konvertierung Flache Objekte, Tasten genau so, wie sie in Ihrer Header-Zeile eingegeben wurden - Leerzeichen, Hashes und so weiter Ein Header von Order # gibt Ihnen einen Schlüssel von "Order #", das ist legal JSON und unangenehmer Javascript (row["Order #"]).).

Der Grund, nach diesem Tool zu greifen, ist der gleiche Grund wie der Rest der Seite: Ihre Daten gehen nirgendwo hin. Wenn Sie' einen Kundenexport mit echten Namen und E-Mails darin umwandeln, ist das ' keine Kleinigkeit - das Einfügen in einen serverseitigen Konverter bedeutet, einem Dritten eine Datei mit personenbezogenen Daten zu übergeben, was ein Gespräch mit Ihrem Datenschutzbeauftragten ist, den Sie & #39; lieber nicht haben Hier läuft das Parsen in Ihrem Tab. Schalten Sie Ihr WLAN aus und es funktioniert immer noch.


Häufig gestellte Fragen

Warum hat meine Postleitzahl ihre führende Null verloren?

Weil Typinferenz es in eine Zahl konvertiert und Zahlen keine führenden Nullen speichern können. 07102 entspricht dem Muster "nur Ziffern" und wird so 7102. Dies betrifft Postleitzahlen, gepolsterte SKUs, Mitarbeiter-IDs und jede Kennung, die zufällig alle Ziffern sind. Zitieren Sie sie in der CSV won' t help - Anführungszeichen werden vor Inferenzläufen entfernt Überprüfen Sie Ihre ID-Spalten in der Ausgabe oder setzen Sie den Werten an der Quelle ein Präfix voran, um sie nicht numerisch zu machen.

Kann ich die automatische Typkonvertierung deaktivieren?

Nicht in der Schnittstelle. Die zugrunde liegende Funktion unterstützt eine inferTypes Option, aber die Benutzeroberfläche stellt sie nicht dar, daher ist die Inferenz immer aktiv. Wenn Sie rohe Zeichenfolgen benötigen, verwenden Sie einen Bibliotheks-Parser wie Papa Parse oder csv-parse Mit deaktiviertem Casting oder korrigieren Sie die betroffenen Spalten nach der Konvertierung.

Unterstützt es Semikolon oder Tabulatorgetrennte Dateien?

Nein - die Schnittstelle ist nur Komma Eine Semikolon-Datei analysiert in eine Nonsense-Spalte, anstatt Fehler zu machen, also achten Sie darauf Ersetzen Sie die Semikolons zuerst durch Kommas (sicher nur, wenn kein zitiertes Feld ein Komma enthält), re-exportieren Sie aus Excel als komma-delimited, oder verwenden Sie den CSV Viewer, der Trennzeichen automatisch erkennt.

Was passiert mit leeren Zellen?

Sie werden nullLeerzeichenfolgen nicht Beachten Sie, dass das Tool' eigene & quot; wie es funktioniert" panel sagt derzeit das Gegenteil - der Paneltext ist falsch und der Code ist korrekt Zellen, die den wörtlichen Text enthalten null oder nil auch werden nulldrohen

Kann ich eine CSV ohne Header-Zeile konvertieren?

kein drohen Die erste Zeile wird immer als Header behandelt, und eine Datei mit nur einer Zeile gibt einen Fehler zurück, der besagt, dass ein Header plus mindestens eine Datenzeile erforderlich ist. Wenn Ihre Daten keinen Header haben, fügen Sie vor dem Einfügen einen in einen Texteditor hinzu.

Behandelt es Kommas und Zeilenumbrüche in angegebenen Feldern?

Ja, beides. Der Parser zitiert Statuszeichen für Zeichen, also ein Feld wie "Mike, Jr." Behält sein Komma bei, und ein zitiertes Feld, das eine Zeilenumsetzung enthält, bleibt ein einzelner Wert, anstatt die Zeile zu teilen. entkam doppelten Zitaten ("") wird ein einzelnes wörtliches Angebot gemäß RFC 4180.

Was passiert mit doppelten Spaltennamen?

Es weigert sich zu konvertieren und sagt Ihnen, welcher Header dupliziert wird That' s absicht - ein JSON-Objekt can' t hat zwei identische Schlüssel, also ist die Alternative, stillschweigend eine Spalte fallen zu lassen Viele Parser tun genau das; Benennen Sie die Spalten um und konvertieren Sie sie erneut.

Gibt es eine Zeilenbegrenzung?

Kein erzwungener Grenzwert, aber alles läuft im Speicher Ihres Browsers: Der CSV-Text, das analysierte Array und die formatierte JSON-Zeichenfolge sind alle gleichzeitig vorhanden. Ein paar tausend Reihen sind bequem, sechsstellige Zeilenzahlen werden den Tab streiten. Verwenden Sie für so große Dateien stattdessen einen Streaming-Parser in Node.

Werden meine Daten irgendwo hochgeladen?

Nein. Parsen geschieht in Ihrem Browser und Ihr CSV wird nie übertragen, was es sicher für Kundenexporte und andere Daten macht, die Sie & #39; nicht legitim in ein serverseitiges Tool einfügen könnten Überprüfen Sie es auf einfache Weise - öffnen Sie DevTools, beobachten Sie den Netzwerk-Tab während der Konvertierung oder schalten Sie einfach Ihr WLAN aus und sehen Sie, dass es noch funktioniert.


Die Kurzversion

CSV zu JSON sieht aus wie die langweiligste Konvertierung im Computer und ist es nicht, denn der Moment, in dem ein Parser entscheidet, was Ihre Zeichenfolgen sind subtEs kann in einer Weise falsch sein, die sich nicht ankündigt. Kein Fehler, keine Warnung, nur vierstellige Postleitzahlen, die zwei Tage später auftauchen.

Also: konvertieren, dann Lesen Sie die Ausgabedrohen Überprüfen Sie die Spalten, die als Zahlen vorgeben. Wenn sie nicht zitiert herauskamen, haben Sie etwas verloren. Diese Gewohnheit kostet zehn Sekunden und hätte mir eine peinliche E-Mail erspart.

der CSV-zu-JSON-Konverter Ist gut in der einmaligen Aufgabe - zitierte Felder, eingebettete Zeilenumbrüche, großzahlige IDs und laute Fehler auf doppelten Headern, alles ohne dass Ihre Daten den Browser verlassen It' s Komma-only, es werden immer Typen abgeleitet, und es erzeugt flache Objekte Jetzt kennen Sie alle drei, bevor sie beißen.

in die andere Richtung gehen: JSON zu CSVdrohen Zum Überprüfen eines unordentlichen CSV: CSV-Betrachterdrohen Zur Überprüfung der Ausgabe: JSON-Formaterdrohen Und wenn Ihre Daten auf eine Konfigurationsdatei zusteuern, json zu Yamldrohen Die breitere Tour ist in der JSON-Tools-Anleitung und das Anleitung für die Coding-Toolsdrohen

Frequently Asked Questions

Because type inference converted it to a number, and numbers can't store leading zeros. 07102 matches the "digits only" pattern, so it becomes 7102. This affects zip codes, padded SKUs, employee IDs, and any identifier that happens to be all digits. Quoting it in the CSV won't help — quotes are stripped before inference runs. Check your ID columns in the output, or prefix the values at the source to make them non-numeric.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!