Preskoči na sadržaj

CSV u JSON Pretvarač - Besplatni Online Alat za Pretvaranje Datoteka

Trenutno pretvorite CSV u JSON i JSON u CSV u svom pregledniku. Sigurana, brza pretvorba podataka s preglednom i preuzimanjem. Bez potrebe za učitavanjem.

Pretvarač CSV/JSON datoteka

Jednostavno pretvarajte između CSV i JSON formata. Učitajte datoteku, pregledajte podatke i preuzmite pretvoreni rezultat.

Pretvarač CSV u JSON

Pretvarač JSON u CSV

Kalkulator učitavanja...
📚

Dokumentacija

Što je pretvarač iz CSV-a u JSON?

Pretvarač iz CSV-a u JSON alat je koji podatke iz formata CSV (vrijednosti odvojene zarezima) pretvara u format JSON (JavaScriptova objektna notacija), ili obrnuto. Ovaj pretvarač u cijelosti radi unutar web-preglednika. Prenesena se datoteka nikad ne šalje na poslužitelj, pa podaci ostaju na korisnikovu uređaju.

CSV je format običnog teksta koji se upotrebljava za pohranu tablica, primjerice proračunskih tablica izvezenih iz Excela ili Google Sheetsa. JSON je tekstualni format izgrađen od parova ključ-vrijednost, a često se upotrebljava za prijenos podataka između web-aplikacija i API-ja. Budući da ta dva formata različito organiziraju podatke, pretvaranje iz jednoga u drugi zahtijeva skup definiranih pravila, opisanih u nastavku.

Kako pretvoriti CSV u JSON

  1. Kliknite „Prenesi CSV datoteku” i na uređaju odaberite datoteku .csv.
  2. Alat prikazuje pretpregled sadržaja izvorne datoteke.
  3. Kliknite „Pretvori u JSON”. Alat prvi redak čita kao zaglavlja stupaca, a svaki drugi redak pretvara u jedan JSON objekt.
  4. Rezultat se pojavljuje u pretpregledu izlaza, oblikovan s uvlačenjem.
  5. Kliknite „Preuzmi JSON” da biste ga spremili kao datoteku .json ili „Kopiraj JSON” da biste kopirali tekst.

Kako pretvoriti JSON u CSV

  1. Kliknite „Prenesi JSON datoteku” i odaberite datoteku .json. Datoteka mora sadržavati JSON niz objekata, primjerice [{"Name":"Ann"},{"Name":"Bo"}].
  2. Alat prikazuje pretpregled izvornog JSON teksta.
  3. Kliknite „Pretvori u CSV”. Alat prikuplja svaki ključ koji se upotrebljava u svim objektima i svaki pretvara u stupac.
  4. Rezultat se pojavljuje u pretpregledu izlaza kao CSV tekst.
  5. Kliknite „Preuzmi CSV” da biste ga spremili kao datoteku .csv ili „Kopiraj CSV” da biste kopirali tekst.

Poslužitelj ne primjenjuje ograničenja prijenosa jer nijedan podatak ne napušta preglednik. Vrlo velika datoteka ipak može usporiti karticu preglednika jer se tijekom pretvaranja cijela datoteka drži u memoriji.

Pravila pretvaranja iz CSV-a u JSON

Pretvarač prvi redak datoteke čita kao nazive stupaca. Svaki sljedeći redak postaje jedan JSON objekt, pri čemu su nazivi stupaca ključevi. Redak s više vrijednosti nego što ima zaglavlja dobiva dodatne ključeve imenovane prema njihovu položaju u retku, pa je uz 3 zaglavlja četvrta vrijednost pod ključem field_4, peta pod ključem field_5 i tako dalje; time se ne gube podaci. Redak s manje vrijednosti za nedostajuće ključeve dobiva prazne nizove znakova. Ako dva zaglavlja imaju isti naziv, drugome se dodaje sufiks, pa a, a postaje ključevi a i a_2.

Pretvarač slijedi pravila CSV-a definirana standardom RFC 4180, tehničkim standardom za taj format. Zarez unutar polja tretira se kao vrijednost u tom polju, a ne kao razdjelnik stupaca, samo ako je polje omeđeno dvostrukim navodnicima, primjerice "Smith, John". Prijelom retka unutar navodnika ostaje dio vrijednosti, a ne novi redak. Dva dvostruka navodnika unutar polja omeđenog navodnicima predstavljaju jedan doslovni znak navodnika.

Kao razdjelnik stupaca prepoznaju se samo zarezi; alat ne prepoznaje niti podržava točke sa zarezom, tabulatore ili druge razdjelnike.

Svaka se vrijednost provjerava i pretvara u određeni tip:

  • Vrijednost zapisana kao običan broj, primjerice 42 ili -3.5, postaje JSON broj.
  • Tekst true ili false, bez obzira na velika i mala slova, postaje JSON logička vrijednost.
  • Sve ostalo ostaje JSON vrijednost tipa string, uključujući prazne ćelije, koje postaju prazni nizovi znakova.
  • Broj s vodećom nulom, primjerice 00512, ostaje niz znakova jer vodeća nula često ima značenje, kao kod poštanskog broja ili identifikacijskog broja.
  • Broj se prihvaća samo ako se njegovim ponovnim zapisivanjem dobije potpuno isti tekst. Dugi cijeli brojevi veći od 9,007,199,254,740,991, najvećeg cijelog broja koji JavaScriptov broj može točno sadržavati, obično ne prolaze tu provjeru i ostaju nizovi znakova, pa se znamenke ne gube.
  • Vrijednost koju je datoteka već omeđila navodnicima uvijek se zadržava kao niz znakova, čak i ako izgleda kao broj, jer se navodnici tumače kao oznaka autora da je riječ o tekstu.

Prazni retci u datoteci preskaču se i ne stvaraju prazne objekte.

Pravila pretvaranja iz JSON-a u CSV

Pretvarač pregledava svaki objekt u polju i prikuplja potpuni skup ključeva koji se u njima upotrebljavaju. Ti ključevi postaju zaglavlja stupaca CSV-a redoslijedom kojim su prvi put pronađeni. Ako nekom objektu nedostaje ključ koji drugi objekt ima, njegova ćelija ostaje prazna umjesto da se prikaže pogreška.

Pretvaranje iz JSON-a u CSV ne izravnava ugniježđene objekte u zasebne stupce. Vrijednost koja je sama objekt ili polje ponovno se zapisuje kao JSON tekst unutar jedne ćelije, pa {"b": 1} postaje ćelija {"b":1}, a [1, 2] postaje ćelija [1,2]. Ništa se ne gubi, ali ugniježđeni dio ostaje u jednom stupcu umjesto da se podijeli. Ako je svakom dijelu potreban vlastiti stupac, ugniježđeni JSON najprije ručno izravnajte.

Vrijednost null i ključ koji jedan objekt ima, a drugome nedostaje, oba stvaraju praznu ćeliju.

Vrijednost ćelije koja sadržava zarez, navodnik ili prijelom retka u izlazu se omeđuje dvostrukim navodnicima, a svaki se navodnik unutar nje udvostručuje, u skladu s prethodno opisanim pravilom za escapiranje u CSV-u.

Ulazni JSON mora biti niz, a svaka njegova stavka mora biti objekt. Broj, niz znakova, null ili ugniježđeni niz na mjestu objekta uzrokuje pogrešku „JSON mora biti niz objekata”. Niz bez ijedne stavke uzrokuje pogrešku „JSON niz je prazan. Dodajte barem jedan objekt za pretvaranje.” Prenesena datoteka bez ikakva sadržaja uzrokuje pogrešku „Prenesena datoteka je prazna.”

Primjer s rješenjem

Početna CSV datoteka:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4

Pretvaranjem u JSON dobiva se:

1[
2  {
3    "Name": "Ann Lee",
4    "Age": 29,
5    "Member": true
6  },
7  {
8    "Name": "Bo, Jr.",
9    "Age": 7,
10    "Member": false
11  }
12]
13

Imajte na umu da je "Bo, Jr." zadržao zarez jer je polje u izvornoj datoteci bilo omeđeno navodnicima, a Age i Member postali su broj i logička vrijednost.

Ponovnim pretvaranjem istog JSON-a u CSV, uz dodani redak u kojem nedostaje Age, dobiva se:

1Name,Age,Member
2Ann Lee,29,true
3"Bo, Jr.",7,false
4Cy Tan,,true
5

Nedostajuća vrijednost Age postaje prazna ćelija, a zarez u "Bo, Jr." uzrokuje ponovno omeđivanje polja navodnicima pri izlazu.

Uobičajene primjene

  • Analiza podataka: pretvaranje CSV izvoza iz proračunske tablice ili analitičkog alata u JSON radi obrade JavaScriptom, a zatim ponovno pretvaranje rezultata u CSV za izvješće.
  • Testiranje API-ja: programer koji razvija API za prihvaćanje prijenosa CSV datoteka može ogledne datoteke pretvoriti u JSON kako bi provjerio stvara li raščlanjivač očekivane objekte.
  • Migracija podataka: premještanje zapisa iz sustava koji izvozi CSV u sustav koji prihvaća samo JSON ili obrnuto.
  • Brzi pregled: pretvaranje JSON datoteke u tablični CSV radi lakšeg čitanja ili obrnuto.

Programerske biblioteke nude isto pretvaranje za veće ili ponavljajuće zadatke, primjerice moduli csv i json u Pythonu ili pandas. Alati naredbenog retka kao što su csvkit i jq omogućuju pretvaranje i filtriranje iz terminala. Te su mogućnosti prikladne za skupnu obradu, a ovaj je alat u pregledniku prikladan za jednokratnu datoteku bez instalacije.

Često postavljana pitanja

Šalje li se prenesena datoteka na poslužitelj? Ne. Pretvaranje se izvršava u JavaScriptu unutar kartice preglednika. Datoteka se čita s lokalnog uređaja i nikad se ne prenosi.

Podržava li pretvarač razdjelnike koji nisu zarez, primjerice točku sa zarezom ili tabulator? Ne. Trenutačna verzija čita samo vrijednosti odvojene zarezima. Datoteku s drugim razdjelnikom najprije treba pretvoriti u oblik sa zarezima, primjerice zamjenom razdjelnika u uređivaču teksta.

Zašto je broj poput 00512 u JSON izlazu ostao tekstualni niz? Vodeće nule obično imaju značenje, kao kod poštanskog broja, pa pretvarač tu vrijednost zadržava kao niz znakova umjesto da je pretvori u broj 512, čime bi se nula izgubila.

Što se događa ako pretvorim JSON koji sadržava ugniježđene objekte? Ugniježđeni objekt zapisuje se kao JSON tekst u jednoj ćeliji, primjerice {"b":1}. Podaci ostaju sačuvani, ali se ne dijele u zasebne stupce. Ugniježđene podatke najprije izravnajte ako je svakom polju potreban vlastiti stupac.

Što ako moj JSON nije niz objekata? Alat prikazuje pogrešku i ne pretvara ništa. Ulaz mora biti JSON niz u kojem je svaka stavka objekt, primjerice [{"a":1},{"a":2}].

Mora li prvi redak CSV datoteke uvijek biti redak zaglavlja? Da. Pretvarač prvi redak uvijek tumači kao nazive stupaca. Datoteka bez retka zaglavlja imat će prvi redak podataka pogrešno protumačen kao zaglavlja.

Reference

  1. Shafranovich, Y. "Common Format and MIME Type for Comma-Separated Values (CSV) Files." RFC 4180, IETF, listopad 2005. https://www.rfc-editor.org/rfc/rfc4180
  2. Bray, T., ur. "The JavaScript Object Notation (JSON) Data Interchange Format." RFC 8259, IETF, prosinac 2017. https://www.rfc-editor.org/rfc/rfc8259
  3. "Working with JSON." MDN Web Docs, Mozilla. https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON