← Alle gereedskap

CSV na JSON omskakelaar

Skakel CSV na JSON en JSON na CSV reg in jou blaaier om. Karteer rye en opskrifte netjies, hanteer aangehaalde velde en skeiers, en hou data plaaslik.

CSV en JSON: twee maniere om dieselfde data te dra

Die meeste tabelvormige data beland uiteindelik in een van twee formate. CSV is die sigblad se natuurlike taal: 'n gewone teksleêr waar elke reël 'n ry is en kommas die kolomme skei. JSON is die taal van API's en toepassings: 'n gestruktureerde teksformaat gebou uit objekte (sleutel-en-waarde-pare) en skikkings (geordende lyste). Hulle beskryf dieselfde inligting in baie verskillende vorms, wat presies is waarom omskakeling tussen hulle so gereeld voorkom. Hierdie bladsy doen daardie omskakeling in albei rigtings, heeltemal binne jou blaaier.

CSV blink uit waar 'n rooster natuurlik voel. Voer 'n verslag uit 'n databasis uit, laai 'n lys bestellings af, of stoor 'n blad vanaf Excel of Google Sheets, en jy kry byna altyd CSV. Dit is kompak, mensleesbaar, en elke ontledingshulpmiddel op aarde kan dit oopmaak. JSON blink uit waar sagteware met sagteware praat. REST-API's stuur en ontvang dit, konfigurasielêers gebruik dit, en JavaScript lees dit sonder enige ontledingsbiblioteek. Wanneer jy 'n sigblad-uitvoer aan 'n API moet voer of 'n API-respons in 'n sigblad moet intrek, vertaal jy eintlik tussen hierdie twee wêrelde.

Gloeiende tabel van CSV-rye wat in geneste JSON-objekte transformeer teen 'n donker indigo-agtergrond
'n Plat CSV-tabel wat vou tot geneste JSON-objekte en -skikkings.

Hoe rye en opskrifte objekte word

Die vertaling is eenvoudiger as wat dit lyk. Die eerste reël van 'n CSV-lêer is gewoonlik die opskrifry, en daardie opskrifname word die sleutels in JSON. Elke volgende ry word een objek, waar elke sel gepaar word met die ooreenstemmende opskrif. Die hele lêer word 'n skikking van daardie objekte. So verander 'n CSV met kolomme name,email,age in 'n lys soos [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]. In die ander rigting lees JSON na CSV die sleutels van die eerste objek om die opskrifreël te bou, en skryf dan een ry per objek. Dit is 'n skoon, voorspelbare heen-en-weer-omskakeling solank jou data werklik tabelvormig is.

Die slaggate wat die moeite werd is om te ken

CSV lyk triviaal maar verberg 'n paar skerp randjies. Die grootste is kommas binne 'n veld. As 'n adres "Berlin, Germany" bevat, sou 'n naïewe splits op kommas daardie enkele waarde in twee kolomme skeur. Die CSV-standaard hanteer dit deur sulke velde in dubbele aanhalingstekens toe te draai, en aanhalingstekens binne 'n aangehaalde veld word verdubbel (""). 'n Goeie omskakelaar respekteer daardie reëls sodat jou data nie stilweg kolomme verskuif nie. Let ook op die skeidingsteken: baie Europese uitvoere gebruik 'n kommapunt in plaas van 'n komma, omdat die komma daar reeds 'n desimale skeidingsteken is. Tabs en pype kom ook voor.

Die dieper verskil is tipes. CSV het glad geen konsep van datatipes nie. Alles is teks, dus die getal 42, die boolean true, en 'n leë sel lyk almal soos gewone stringe. JSON, in teenstelling, onderskei getalle, stringe, booleans, null, en geneste strukture. Wanneer jy CSV na JSON omskep, kom waardes as stringe aan tensy die hulpmiddel opdrag gegee word om getalle en booleans te interpreteer. Om JSON na CSV om te skep het die teenoorgestelde probleem: geneste objekte en skikkings pas nie netjies in 'n plat rooster nie, dus word hulle gewoonlik plat gemaak of tot 'n string in 'n enkele sel omskep. Om dit vooraf te weet spaar jou daarvan om later te wonder hoekom 'n kolom "verkeerd lyk".

Sigbladrooster wat verander in 'n gloeiende boom van JSON-hakies in siaan en goud
'n Sigbladrooster wat verander in 'n vertakkende boom van JSON-hakies.

'n Werklike heen-en-weer-voorbeeld

Hier is 'n scenario wat gedurig voorkom. 'n Kollega stuur jou 'n sigblad van nuwe gebruikers en vra jou om hulle deur 'n interne API te laai. Die API aanvaar slegs JSON. Jy voer die blad na CSV uit, plak dit hier, en kry 'n skoon skikking van objekte terug wat gereed is om in jou versoeklading te laat val. Later gee die API 'n JSON-lys van die rekords wat dit geskep het terug, en jy moet dit terug aan dieselfde kollega vir hersiening gee. Jy plak die JSON, skakel dit na CSV om, en dit maak reguit in hulle sigblad oop. Geen skripte, geen installasies nie, net twee vinnige vertalings midde-in 'n normale werkvloei.

Slegs plaaslik, met opset

Dit alles loop in jou blaaier. Jou CSV en JSON word deur JavaScript op jou eie masjien ontleed en omgeskakel, en niks word na 'n bediener opgelaai nie. Dit maak saak omdat uitvoere dikwels regte name, e-posse, bestelbesonderhede, of interne identifiseerders bevat wat jy nie in 'n ewekansige afgeleë diens behoort te plak nie. Hier verlaat die data nooit die bladsy nie. As jy die resultaat daarna wil netjies maak, sal ons JSON-formateerder dit mooi druk en valideer, en jy kan deur die res van ons data-omskakelaars blaai vir verwante formate.

Gereelde vrae

Word my data iewers opgelaai?

Nee. Die omskakeling loop heeltemal in jou blaaier met JavaScript, dus bly jou CSV en JSON op jou eie toestel en word nooit na 'n bediener gestuur nie.

Hanteer die omskakelaar kommas binne velde?

Ja. Velde wat kommas bevat moet in dubbele aanhalingstekens in die CSV toegedraai word, en die ontleder respekteer daardie aanhalingstekens sodat die waarde in een kolom bly.

Waarom verskyn my getalle as teks in JSON?

CSV het geen datatipes nie, dus is elke sel gewone teks. Waardes word JSON-stringe tensy getal- en boolean-ontleding toegepas word, omdat die bronlêer geen manier gee om 'n getal van 'n woord te onderskei nie.

Wat gebeur met geneste JSON wanneer ek na CSV omskep?

'n Plat rooster kan geen geneste strukture bevat nie, dus word geneste objekte en skikkings tipies plat gemaak of as 'n enkele string-waarde binne een sel geskryf.

Kan ek 'n kommapunt of tab in plaas van 'n komma gebruik?

Ja. Baie uitvoere, veral Europese, gebruik kommapunte of tabs as skeidingstekens, en die hulpmiddel kan daardie lees in plaas van die standaardkomma.

Skakel dit in albei rigtings om?

Ja. Jy kan CSV in JSON verander en JSON terug in CSV, wat heen-en-weer-omskakelings tussen sigblaaie en API's eenvoudig maak.