Konvertera CSV till JSON och tillbaka utan att förstöra data
CSV är en ren textttabell: en post per rad, med fält separerade av en avgränsare, vanligtvis ett komma. Det går sönder när ett fält innehåller avgränsaren, ett dubbelt citattecken eller en radbrytning, eftersom läsaren måste skilja struktur från innehåll. Följ citeringsreglerna, kontrollera avgränsaren och rubrikraden, och behåll siffror med inledande nollor som text. Resten av artikeln handlar om vad en omvandling fram och tillbaka kan och inte kan bevara.
CSV till JSONBehöver CSV som JSON, eller tvärtomGör det gratisVad en CSV-fil egentligen är
CSV har ingen enda auktoritativ standard, men RFC 4180 beskriver den vanliga formen, och de flesta läsare följer den. Dess grundregler får plats i en kort lista:
- Varje post står på en egen rad, och enligt RFC:n avslutas raderna med en vagnretur och en radmatning, CRLF.
- Fält separeras med kommatecken.
- Ett fält som innehåller ett kommatecken, ett dubbelt citattecken eller en radbrytning omges av dubbla citattecken.
- Ett dubbelt citattecken inuti ett citerat fält skrivs som två dubbla citattecken.
Så raden 1001,"Smith, Ann",02134 har tre fält, eftersom kommatecknet inom citattecknen är innehåll. En delare som klyver vid varje kommatecken hittar fyra. fixmint-läsaren tillämpar dessa regler: ett citerat fält kan innehålla avgränsaren, radbrytningar och dubbla citattecken, och ett icke stängt citattecken rapporteras tillsammans med raden där det börjar.
Varför avgränsaren ändras
Kommatecknet är RFC:ns standard, men där kommatecknet är decimaltecken, så att 1,5 betyder ett och en halv, sparar kalkylprogram ofta CSV med semikolon. Tabbseparerade filer (TSV) undviker konflikten i de flesta data, eftersom tabbar sällan förekommer inuti text.
Avgränsarmenyn erbjuder Auto, Komma, Semikolon, Tabb och Lodrätt streck. Auto läser de första tio raderna, räknar varje kandidat utanför citattecken och väljer den vars antal per rad är mest konsekvent. Välj avgränsaren själv när Auto gissar fel.
Konvertera i fixmint
Exemplet använder standardinställningarna i CSV till JSON-verktyget.
Exempel
Klistra in den här CSV-filen, med Första raden är en rubrik ikryssad:
id,name,zip,note
1001,"Smith, Ann",02134,"She said ""hi"""
1002,Bo,10001,"line one
line two"
Med Konvertera siffror avslaget och JSON-indrag satt till 2 mellanslag returnerar verktyget:
[
{
"id": "1001",
"name": "Smith, Ann",
"zip": "02134",
"note": "She said \"hi\""
},
{
"id": "1002",
"name": "Bo",
"zip": "10001",
"note": "line one\nline two"
}
]
Med Konvertera siffror påslaget blir id och zip 10001 till tal, medan 02134 förblir text.
Steg
- Klistra in CSV-filen, eller släpp en fil med ändelsen .csv, .tsv, .txt eller .json.
- Kontrollera Första raden är en rubrik, Avgränsare och Konvertera siffror. Välj ett JSON-indrag på 2 mellanslag, Tabb eller Minifierad.
- Kopiera resultatet, eller ladda ner det som .json.
Behåll siffror som text
JSON-tal kan inte ha inledande nollor, så 02134 är inte ett giltigt JSON-tal. Postnummer, telefonnummer och produktkoder måste förbli text, annars försvinner nollan. Med Konvertera siffror påslaget omvandlar verktyget 10001 men behåller 02134 som sträng. Alternativet är avslaget som standard. Det konverterar endast värden med en punkt som decimaltecken, så 1,5 i en semikolonfil förblir som den skrevs.
Långa identifierare kräver också omsorg. JavaScript, som kör det mesta av JSON i webbläsaren, lagrar tal som 64-bitars flyttal. Heltal är exakta endast upp till 9,007,199,254,740,991, vilket är två upphöjt till 53 minus 1. Talet 12345678901234567890 blir 12345678901234567000 när ett JavaScript-program läser det. Verktyget skriver siffrorna som de skrevs, men ett program som tolkar JSON i JavaScript avrundar dem. Behåll ID:n som strängar. Formatera JSON bevarar också sådana tal exakt som de skrevs och anger hur många den har bevarat.
Kapslad JSON och tillbaka till CSV
CSV är platt och JSON kan vara kapslad. När JSON omvandlas till CSV skapas en kolumn för varje nyckel i alla objekt, i den ordning varje nyckel först förekommer. Ett kapslat objekt eller en lista hamnar i sin cell som JSON-text, ett null blir en tom cell, och true och false skrivs som ord. Raderna sammanfogas med CRLF, och ett fält citeras endast när det innehåller avgränsaren, ett citattecken, en radbrytning eller mellanslag i någon ände.
Indata som börjar med [ eller { läses som JSON. Växlingsknappen byter riktning och heter CSV → JSON eller JSON → CSV. I riktningen JSON → CSV visar utdataalternativen en Avgränsare-meny och ett alternativ För Excel.
En omvandling fram och tillbaka förlorar information. Ett null och en tom sträng blir båda en tom cell, och kapslingen återskapas inte, så behåll den ursprungliga JSON:en om du behöver dess struktur.
Excel, UTF-8 och byte order mark
En CSV-fil är byte, och läsaren måste känna till teckenkodningen. UTF-8 rymmer accenterade bokstäver och andra alfabet. En byte order mark, tre byte i början av filen, markerar filen som UTF-8. Utan den läser vissa kalkylprogram filen i en lokal kodsida, och accenterade bokstäver blir konstiga tecken. Kalkylprogram gör dessutom ofta om 02134 till 2134 när de öppnar en CSV.
Alternativet För Excel lägger till byte order mark i den nedladdade CSV-filen endast, aldrig i den kopierade texten, och bara i riktningen JSON → CSV. Läsaren tar bort en byte order mark från indata, så en fil som redan har en konverteras utan fel.
Specialfall
- Ojämna rader. Med rubrik påslagen fylls en kort rad ut med tomma värden, och en längre rad behåller sina extra värden som column_N. Resultatet anger hur många rader som skiljer sig från rubriken.
- Upprepade eller tomma rubriker. Ett upprepat namn får _2, _3 och så vidare, och ett tomt namn blir column_N. Båda ändringarna hindrar att två nycklar skriver över varandra.
- Typografiska citattecken. Smarta citattecken från ett ordbehandlingsprogram är inte CSV-citattecken, så ett fält som ”Smith, Ann” delas vid sitt kommatecken. Räta upp dem först, med fixa inklistrad text eller enligt beskrivningen i guiden om typografiska citattecken.
- Radbrytningar inom citattecken. Ett fält som sträcker sig över två rader är en post, men ta bort dubbletter i lista delar sin indata vid varje radbrytning, så den behandlar de två halvorna som separata rader. Konvertera till JSON och jämför objekten, eller kontrollera för hand. Verktyget är användbart för listor med ett värde per rad.
- Stora filer. Resultatrutan visar de första 100 000 tecknen, men Kopiera och nedladdningen innehåller hela utdata.
- Ogiltig JSON. Konverteraren anger rad och kolumn för ett fel, med en caret under tecknet. Formatera JSON förklarar de vanliga felen, och guiden om JSON-fel går igenom dem mer utförligt.
Bortstrulade mellanslag runt fält, tomma rader mitt i en fil och citattecken som används inkonsekvent orsakar de flesta CSV-problem, innan avgränsaren ens spelar roll. Rensa CSV-filen först och konvertera sedan.
Översatt från Engelsk original med hjälp av AI.
Kommentarer
Inga kommentarer än. Var först.


