Command Palette

Search for a command to run...

CSV naar JSON: Het type inferentie zal je postcodes opeten

CSV naar JSON: Het type inferentie zal je postcodes opeten

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

Onderdeel van de collectie Datatools

CSV naar JSON-converter

CSV online converteren naar JSON Parseert geciteerde velden en elke scheidingsteken, leidt getallen en booleans af en voert een reeks objecten uit. 100% clientzijde, geen aanmelding.

CSV naar JSON-converter gebruiken

Een klant stuurde me een 12.000 rijrij klantenexport om in een staging-database te laden. Ik heb het omgezet, geïmporteerd en verzonden. Twee dagen later vroeg hun Ops-leider waarom een paar honderd klanten in New Jersey viercijferige postcodes hadden.

07102 waren geworden 7102. Elke rits die begint met een nul, over het hele bestand, stilletjes geamputeerd Niet door een bug - door een functie Type gevolgtrekking bekeken 07102, zag iets dat overeenkwam met "een nummer", en zette het behulpzaam om tot één. Voorloopnullen zijn niet iets wat getallen hebben.

ik bouwde de CSV naar JSON-converter Op Toolz.dev, en het doet dit ook. Ik ga je precies laten zien waar, omdat een converter die stilletjes je gegevens verandert gevaarlijker is dan een die gewoon faalt.

tl;dr: de CSV naar JSON-converter Verandert een CSV in een array van objecten, waarbij de eerste rij als sleutels wordt gebruikt, die volledig in uw browser worden uitgevoerd. het leidt altijd typen af en dat kun je doen't schakel dat uit in de gebruikersinterface - wat betekent 071027102, 1250.501250.5, lege cellen → null, en true/false → Booleeërs. Grote gehele getallen voorbij 2⁵³ Stay Strings, waardoor je Twitter-ID's worden opgeslagen. komma-only in de interface, dus puntkomma CSV's van European Excel won't parse Dubbele headers zijn een harde fout in plaats van een stille overschrijving - dat one' een echte verbetering is ten opzichte van de meeste parsers Controleer de uitvoer voordat u importeert, en gebruik de JSON-formatter om het te bekijken.


Wat doet deze converter eigenlijk met uw gegevens?

Elke waarde in een CSV is tekst. 29 zijn de karakters 2 en 9. JSON heeft echte typen, dus een converter moet beslissen: is 29 Het getal 29 of de string "29"? Er is in het algemeen geen goed antwoord, en elke CSV-parser raadt.

Deze gokt. Altijd. Hier is de volledige regelset, rechtstreeks uit de code en geverifieerd door deze uit te voeren:

CSV-waarde JSON-uitgang symboliseren
29 29 getal
07102 7102 nummer - nul weg
1250.50 1250.5 aantal - cent weg
true / TRUE true booleaans
null / NIL null uitdrukkingsloos
(leeg cel) null uitdrukkingsloos
9007199254740993 "9007199254740993" slier
1e3 1000 getal
+5 "+5" slier
.5 ".5" slier
NO "NO" slier
+8801712345678 "+8801712345678" slier
2024-01-05 "2024-01-05" slier

Een paar van deze verdienen een nadere blik, want het patroon is niet duidelijk.

Het getal regex is streng, en dat is dragend. het komt overeen ^-?\d+$ En niets anders. daarom is het waarom +5 en .5 overleef als snaren - geen leidend pluspunt, geen kale decimaal. It's ook waarom +8801712345678- een Bengaals telefoonnummer, en ik test met het mijne - komt intact door Strip dat + En je zou het verliezen door numerieke conversie. Dus de striktheid van de Regex beschermt per ongeluk telefoonnummers en alleen telefoonnummers die hun landcode plus behouden.

Grote gehele getallen worden correct behandeld, wat me verbaasde. Alles buiten het JavaScript's Safe Integer-bereik (±2⁵³1) wordt opzettelijk als een string bewaard in plaats van geconverteerd en verminkt. Sneeuwvlok-ID's, Twitter-ID's en databasesleutels van 19 cijfers overleven. De meeste naïeve converters bellen parseInt en je overhandigen 9007199254740992 waar je had ...93. Deze controleert eerst de gebonden.

NO Blijft een string- die stilletjes het probleem Noorwegen ontwijkt dat YAML-bestanden eet Ander formaat, andere parser, maar vermeldenswaard: de landcode NO is een coin-flip voor hoe een configuratie-parser het behandelt, en hier is het veilig.

Leeg betekent null, geen lege string. En hier is een kleine documentatiefout die ik vond om dit te schrijven: het tool's eigen "hoe het werkt' zegt "Lege waardes worden bewaard als lege strings in de JSON-uitvoer." Dat zijn ze niet. inferType('') opbrengst null. De UI-tekst is verkeerd; de code is wat wordt verzonden. Ik maak de kopie vast.


Waarom wordt 07102 7102 en wat moet ik eraan doen?

Omdat een postcode geen nummer is en een computer het niet kan zeggen.

07102 Matches "cijfers, optioneel negatief" perfect. parseInt("07102", 10) is 7102. De leidende nul had betekenis: het was de data - en cijfers kunnen het niet vasthouden Hetzelfde gebeurt met

  • Postcodespiepsel 07102, 01950, alles in New England of New Jersey
  • Producten SKU'spiepsel 00451
  • Telefoonnummers zonder een pluspuntpiepsel 0171...
  • Bank-/routcodes, Werknemers-ID's, Elke gewatteerde identificatie
  • te geld makenpiepsel 1250.501250.5, en 2100.002100

Dat laatste is het waard om mee te zitten. 1250.50 en 1250.5 zijn hetzelfde nummer en een andere tekenreeks. Als u stroomafwaarts rendeert, $1250.5 gaat ergens in een gebruikersinterface verschijnen, en iemand zal een bug indienen die een uur nodig heeft om terug te voeren op een CSV-conversie drie weken eerder. (De echte les is om geld op te slaan als gehele centen of een decimale string, nooit een float - maar dat' is een gevecht voor een ander artikel.)

Op dit moment is er in deze tool Geen schakelaar om gevolgtrekking uit te schakelen. De onderliggende functie neemt een inferTypes Optie en de gebruikersinterface slagen er nooit in, dus het is permanent aan de standaard. Dat is een gat, en het is het topitem op mijn lijst voor deze tool.

Tot het wordt verzonden, uw opties:

  1. Kijk naar de output. Serieus - dit is de reden waarom de tool JSON in een paneel toont in plaats van het alleen maar te downloaden Scan uw ID-kolommen Het duurt tien seconden en het & #39; s hoe ik de postcodes had moeten vangen.
  2. Quote-proof het stroomopwaarts. Citaat in de CSV won't help - de parser stript citaten en daarna leidt, dus "07102" wordt nog steeds 7102. Maak in plaats daarvan de waarde niet-numeriek aan de bron: exporteren als ZIP-07102of voeg een voorvoegselkolom toe in het werkblad.
  3. nabewerking. Converteer en repareer vervolgens de kolommen waarvan u weet dat ze identifiers zijn: data.forEach(r => r.zip = String(r.zip).padStart(5, '0')). Lelijk, maar eerlijk en controleerbaar.
  4. Gebruik een echte parser voor echte pijplijnen. voor alles wat gepland of geautomatiseerd is, csv-parse of papa ontleden in knooppunt met cast: false zal dit goed doen. Een browser tool is voor de eenmalige.

Wat krijgt de parser goed?

I' zijn er hard tegen geweest, dus hier' is de andere helft - en een deel hiervan is echt beter dan wat jij ' elders zal vinden.

Dubbele headers zijn een harde fout. voed het a,b,a En het weigert: Duplicate headers found: a. De meeste parsers laten de laatste kolom stilletjes winnen, dus een kolom met gegevens verdwijnt zonder een woord. Als je hier luid faalt, is de juiste oproep - je kunt niet twee sleutels met dezelfde naam in een JSON-object hebben, en doen alsof je anders gegevens verliest.

Geciteerde velden worden correct behandeld, per RFC 4180. Komma's binnenaanhalingstekens blijven staan; "" wordt een letterlijke ". De voorbeeldgegevens worden geleverd met "Mike, Jr." specifiek om het te bewijzen.

Nieuwe regels binnen geciteerde velden werken. Dit is waar handgerolde CSV-splitsing meestal sterft - iemand splitst zich op \n en een veld met meerdere regels ontploft het hele bestand. De rijsplitter volgt het citaat van de staat per teken, dus "line1\nline2" blijft één veld.

Lege regels worden overgeslagen, dus slepende nieuwe regels en de verdwaalde lege rij Excel-bladeren aan het einde produceren geen fantoomobjecten.

Ragged rijen crashen niet. Te weinig velden en de ontbrekende sleutels komen terug null; te veel en de extra's voorbij het aantal headers worden stil geschrapt. (Dat laatste deel I'd roept discutabel op in plaats van correct - een waarschuwing zou beter zijn dan een stille weggooi.)

Een RFC-afwijking om te weten over: Waarden worden bijgesneden, inclusief binnenaanhalingstekens. RFC 4180 2.4 zegt dat spaties deel uitmaken van het veld en niet mogen worden genegeerd, dus " John " zou moeten zijn " John ". Deze tool geeft je "John". Dat' is een opzettelijk gemak - 99% van de tijd achterblijvende witruimte in een CSV is een ongeluk dat je weg wilt - maar als je ' zijn retourgegevens waarbij opvulling significant is, is het ' is een stap met verlies en de specificatie staat niet aan mijn kant.


Waarom ontleden mijn puntkomma-CSV niet?

Omdat de interface alleen komma's is, en dit vangt elke Europese export.

Excel in een locale die een komma gebruikt terwijl de decimale scheidingsteken CSV's schrijft met puntkomma als de veldbegrenzer. Perfect geldig, zeer gebruikelijk, en deze tool zal het niet ontleden. plaksel a;b en je krijgt een enkele sleutel letterlijk genaamd a;b met de waarde "1;2". Het doet ' t fout - het levert slechts één nutteloze kolom op, wat erger is dan fouten maken.

De parseerfunctie accepteert een delimiter Optie. De gebruikersinterface legt het nooit bloot. Dezelfde klasse van GAAP als de inferentieschakelaar.

Tijdelijke oplossingen:

  • vinden en vervangen ;, in een teksteditor eerst - veilig slechts Als er geen veld een komma bevat tussen aanhalingstekens.
  • betreffende -Exporteren vanuit Excel met "CSV UTF-8 (door de komma begrensd)".
  • Gebruik de CSV-kijker in plaats daarvan - het doet afbakening detectie door het scoren van kolom-telling consistentie over kandidaat-delimiters, zodat het zal uw puntkomma bestand lezen Het won't converteren naar JSON, maar het' zal u laten zien wat je hebt.

Tabbladen hebben hetzelfde probleem. Zo ook pijpenafgedempt.


Hoe converteer ik CSV naar JSON op Toolz.dev?

Stap 1: Open de converter

ga naar de CSV naar JSON-converter. Voorbeeldgegevens worden geladen en al geconverteerd, zodat u de vorm onmiddellijk kunt zien.

Stap 2: Plak je CSV

Plak in het linkerdeelvenster. er is Geen bestandsupload- it' is een tekstgebied, dus open uw .csv in een teksteditor en kopieer het over. Voor een paar duizend rijen is dat prima. Gebruik voor een export van 200 MB een echte parser.

Uw eerste rij moet kopteksten zijn en u hebt ten minste één gegevensrij nodig. Een enkele regel keert terug CSV must have at least a header row and one data row.

Stap 3: Converteren

gelukkige zet Converteren naar JSON. U krijgt een reeks objecten, één per rij, toetsen uit uw header, twee spaties ingesprongen Het aantal rijen verschijnt boven de uitvoer - controleer het aan de hand van wat u had verwacht, aangezien het ' is de goedkoopst mogelijke gezond verstandstest.

Stap 4: Lees de uitvoer voordat u hem vertrouwt

De stap die iedereen overslaat en ik heb een keer overgeslagen. Kijk naar uw ID-kolommen. Kijk naar je geldkolommen. Als een postcode niet wordt geciteerd in de JSON, is het nu een nummer.

Stap 5: Kopiëren of downloaden

copiëren Voor het klembord, Json downloaden voor een data.json bestand.


Wanneer mag ik geen browserconverter gebruiken?

Eerlijk zijn over de grens:

betrekking goed doen
Eenmalig, een paar duizend rijen CSV naar JSON
Gevoelige gegevens die u niet kunt uploaden Dit - het verlaat nooit uw browser
alles wat gepland of geautomatiseerd is csv-parse / Papa-parseren in knooppunt
Puntkomma of tab gescheiden CSV-kijker, of repareer het scheidingsteken
Postcodes, SKU's, gewatteerde ID's alles met cast: false
Geneste uitvoer van gestippelde headers Een script - dit levert alleen platte objecten op
100k+ rijen Streaming-parser; de browser houdt alles in het geheugen
De andere kant op gaan JSON naar CSV

Die "nested output" is de moeite waard om duidelijk te zeggen omdat oudere versies van deze gids anders beweerden: headers like user.name en address.city beginnen te beginnen nee geneste objecten worden. je krijgt een plat object met een sleutel letterlijk met de naam "user.name". There' s geen uitbreiding van de puntnotatie, geen transformatie van de koptekst, geen conversie van de naamval Platte objecten, toetsen precies zoals getypt in uw koprij - spaties, hashes, en al Een koptekst van Order # geeft je een sleutel van "Order #", wat legaal is JSON en Awkward JavaScript (row["Order #"]).

De reden om naar deze tool te reiken is dezelfde reden als de rest van de site: uw gegevens doen ' gaan nergens heen Als u ' een klantenexport opnieuw converteert met echte namen en e-mails erin, that' is niet zo'n klein ding - het plakken ervan in een server-side converter betekent dat u een bestand met persoonlijke gegevens aan een derde partij overhandigt, wat een gesprek is met uw DPO die u ' liever niet hebt Hier wordt het parseren uitgevoerd in uw tabblad Schakel uw Wi-Fi uit en het werkt nog steeds.


Veelgestelde vragen

Waarom verloor mijn postcode de voorste nul?

Omdat type inferentie het omgezet in een getal, en getallen geen voorloopnullen kunnen opslaan. 07102 komt overeen met het "cijfers" only" patroon, dus het wordt 7102. Dit heeft invloed op postcodes, opgevulde SKU's, werknemers-ID's en elke identificatie die toevallig alle cijfers zijn. Als u het citeert in de CSV won't help - aanhalingstekens worden verwijderd voordat de gevolgtrekking wordt uitgevoerd. Controleer uw ID-kolommen in de uitvoer of geef de waarden aan de bron een voorvoegsel om ze niet-numeriek te maken.

Kan ik automatische typeconversie uitschakelen?

Niet in de interface. De onderliggende functie ondersteunt een inferTypes optie, maar de gebruikersinterface stelt het niet bloot, dus gevolgtrekking is altijd aan. Als je rauwe strings nodig hebt, gebruik dan een bibliotheekparser zoals Papa Parse of csv-parse met Casting uitgeschakeld, of de betreffende kolommen na conversie repareren.

Ondersteunt het Plakkomma of Tab Gescheiden Bestanden?

Nee - de interface is alleen komma's Een puntkommabestand parseert in één onzinkolom in plaats van fouten te maken, dus let daarop Vervang eerst de puntkomma's door komma's (alleen veilig als geen enkel geciteerd veld een komma bevat), exporteer opnieuw vanuit Excel als komma-gescheiden, of gebruik de CSV Viewer, die scheidingstekens automatisch detecteert.

Wat gebeurt er met lege cellen?

zij worden null, geen lege tekenreeksen Merk op dat de tool's eigen " Hoe het werkt" paneel zegt momenteel het tegenovergestelde - de paneeltekst is verkeerd en de code is correct Cellen die de letterlijke tekst bevatten null of nil ook worden null.

Kan ik een CSV converteren zonder koprij?

heel weinig . De eerste rij wordt altijd behandeld als de koptekst en een bestand met slechts één rij geeft een fout als koptekst dat er een koptekst plus ten minste één gegevensrij nodig is. Als uw gegevens geen koptekst hebben, voegt u er een toe aan een teksteditor voordat u deze plakt.

Behandelt het komma's en regeleinden in geciteerde velden?

Ja, beide. De parser volgt het citaat van het staatsteken per karakter, dus een veld zoals "Mike, Jr." Bewaart zijn komma en een geciteerd veld met een nieuwe regel blijft een enkele waarde in plaats van de rij te splitsen. Ontsnapte dubbele aanhalingstekens ("") een enkele letterlijke quote worden, volgens RFC 4180.

Wat gebeurt er met dubbele kolomnamen?

Het weigert te converteren en vertelt je welke header wordt gedupliceerd Dat' s opzettelijk - een JSON object can' t hebben twee identieke sleutels, dus het alternatief is stil een kolom laten vallen Veel parsers doen precies dat; hernoem de kolommen en converteer opnieuw.

Is er een rijlimiet?

Geen afgedwongen limiet, maar alles wordt uitgevoerd in het geheugen van uw browser: de CSV-tekst, de geparseerde array en de opgemaakte JSON-tekenreeks bestaan allemaal tegelijk. Een paar duizend rijen is comfortabel; het aantal rijen van zes cijfers zal het tabblad moeilijk maken. Gebruik in plaats daarvan een streaming-parser in node voor bestanden die groot zijn.

Worden mijn gegevens ergens geüpload?

Nee. Parseren gebeurt in uw browser en uw CSV wordt nooit verzonden, wat het veilig maakt voor klantenexport en andere gegevens die u zou kunnen ' t legitiem plakken in een tool aan de serverzijde Verifieer het op de eenvoudige manier - open DevTools, bekijk het tabblad Netwerk tijdens het converteren, of schakel gewoon uw Wi-Fi uit en zorg ervoor dat het nog steeds werkt.


De korte versie

CSV naar JSON ziet eruit als de saaiste conversie in computers en dat is het niet, want op het moment dat een parser beslist wat je snaren zijn tussen-, het kan verkeerd zijn op manieren die zichzelf niet aankondigen. Geen fout, geen waarschuwing, slechts vier cijfers postcodes die twee dagen later opduiken.

Dus: converteren, dan Lees de uitvoer. Controleer de kolommen die identifiers zijn die zich voordoen als getallen. Als ze er niet geciteerd uitkwamen, ben je iets kwijtgeraakt. Die gewoonte kost tien seconden en zou me een gênante e-mail hebben bespaard.

de CSV naar JSON-converter is goed in de eenmalige taak - geciteerde velden, ingebedde nieuwe regels, big-integer ID's, en luide fouten op dubbele headers, allemaal zonder dat uw gegevens de browser verlaten It' s komma-only, het leidt altijd typen af, en het produceert platte objecten Nu ken je ze alle drie voordat ze bijten.

De andere kant op gaan: JSON naar CSV. Voor het inspecteren van een rommelige CSV eerst: CSV-kijker. Voor het controleren van de output: JSON-formatter. En als uw gegevens naar een configuratiebestand gaan, json naar yaml. De bredere tour is in de JSON-toolsgids en de Handleiding voor coderingshulpmiddelen.

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!