JSON, YAML, CSV: Mikor melyiket használd, és hogyan konvertálj köztük
Letöltöd az adathalmazt, és CSV formátumban van. Az API-od JSON-t ad vissza. A konfigurációs fájlod YAML-ban van. Egy kollégád JSON fájlt küld, és táblázatként kéri vissza. Egy másik YAML-konfigurációt ad át, és egy másik eszköznek JSON-ban kell.
Az adatformátum-konverzió egyike azoknak a feladatoknak, amelyek triviálisnak tűnnek, amíg ténylegesen nem végzed. Megérteni, mikor melyiket kell használni, és hogyan lehet köztük váltani, valódi időt takarít meg.
A három formátum egy pillantásra
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Mi ez: Szöveges formátum strukturált adatokhoz, amely támogatja az objektumokat (kulcs-érték párokat), tömböket (rendezett listákat), karakterláncokat, számokat, logikai értékeket és null értéket.
Erősségek: Géppel olvasható, minden programozási nyelvben széles körben támogatott, természetesen kezeli a beágyazott adatokat, a szigorú szintaxis megelőzi a félreérthető eseteket.
Gyengeségek: Részletes (sok kapcsos zárójel, szögletes zárójel és idézőjel), kevésbé ember által olvasható, mint a YAML, nem támogatja a megjegyzéseket.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Mi ez: Ember-barát adatszerializációs formátum, amely behúzást használ kapcsos zárójelek és szögletes zárójelek helyett. A JSON egy szuperhalmazaként érvényes JSON egyben érvényes YAML is.
Erősségek: Rendkívül olvasható, támogatja a megjegyzéseket, kevesebb vizuális zaj, nagyszerű konfigurációs fájlokhoz.
Gyengeségek: Behúzásérzékeny (könnyen elrontható helytelen behúzással), néhány meglepő elemzési viselkedés, lassabb az elemzése, mint a JSON-nak.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Mi ez: Egyszerű szöveges formátum, ahol minden sor egy rekord, és az értékeket vesszők (vagy néha pontosvesszők, tabulátorok) választják el.
Erősségek: Univerzális (minden táblázat, adatbázis és adateszköz támogatja), kompakt táblázatos adatokhoz, könnyen olvasható és létrehozható.
Gyengeségek: Nem támogat beágyazott adatokat, nincs adattípus (minden karakterlánc), nincs szabvány a speciális karakterekre, csak egyszerű táblázatokra korlátozódik.
Tudtad? A YAML technikailag a JSON szuperhalmazaként. Ez azt jelenti, hogy bármely érvényes JSON-dokumentum egyben érvényes YAML-dokumentum is. Beillesztheted a JSON-t egy YAML-elemzőbe, és működni fog. Az ellenkezője nem igaz — a YAML funkcióinak (megjegyzések, horgonyok, többsoros karakterláncok) nincs JSON megfelelőjük.
Mikor melyiket használd
| Felhasználási eset | Legjobb formátum | Miért |
|---|---|---|
| API kérések és válaszok | JSON | Ipari szabvány, minden nyelvnek van natív támogatása |
| Konfigurációs fájlok | YAML | Ember-olvasható, megjegyzéseket is támogat |
| Táblázatadatok | CSV | Közvetlenül megnyílik Excelben, Google Sheetsben stb. |
| Adatbázis-exportok | CSV | Az egyszerű táblázatos adatok közvetlenül illeszkednek sorokhoz és oszlopokhoz |
| Összetett beágyazott adatok | JSON vagy YAML | A CSV nem tudja megjeleníteni a beágyazást |
| Rendszerek közötti adatcsere | JSON | Egyértelmű elemzés, szigorú specifikáció |
| Ember által szerkesztett konfig | YAML | Könnyebben olvasható és szerkeszthető kézzel |
| Egyszerű adatlisták | CSV | Könnyű, nincs többletterhelés |
Konvertálás a formátumok között
JSON-ból YAML-ba
Ez a leggyakoribb konfigurációs konverzió. Van egy JSON-konfigurációd az egyik eszköztől, és YAML-ra van szükséged a másikhoz. A konverzió egyszerű, mert a YAML mindent támogat, amit a JSON.
{"server": {"host": "0.0.0.0", "port": 8080}}
Lesz belőle:
server:
host: 0.0.0.0
port: 8080
YAML-ból JSON-ba
A YAML-ból JSON-ba való átmenet is egyszerű, de elvesznek a megjegyzések (a JSON nem támogatja őket), és az eredmény részletesebb lesz.
JSON-ból CSV-be
Ez jól működik lapos JSON-tömbökre (azonos kulcsú objektumok tömbjei). Minden objektum egy sort, minden kulcs egy oszlopfejlécet alkot.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Lesz belőle:
name,age
Alice,30
Bob,25
Figyelmeztetés A JSON-ból CSV-be konvertálás meghiúsul, ha a JSON beágyazott objektumokat vagy tömböket tartalmaz. A CSV egyszerű — nincs módja megjeleníteni egy „skills" tömböt vagy egy beágyazott „address" objektumot. A beágyazott adatokat vagy lapítani kell (address.city, address.country mint külön oszlopok), vagy stringként kell tárolni a CSV cellában.
CSV-ből JSON-ba
Minden sor objektummá válik, az oszlopfejlécek kulcsok lesznek. Ez tiszta egyszerű táblázatos adatokhoz.
CSV-ből YAML-ba
Ritkább, de ugyanazt a logikát követi: minden sor YAML-leképezéssé válik, az egész fájl pedig YAML-sorozattá.
Gyakori buktatók
CSV kódolási problémák
A CSV fájlok különböző karakterkódolásokat használhatnak (UTF-8, Latin-1, Windows-1252). Ha megnyitsz egy CSV-t és összekeveredett karaktereket látsz, például „München" a „München" helyett, kódolási eltérésről van szó. Mindig használj UTF-8-t, ha lehetséges.
CSV elválasztójelek összekeverése
Nem minden CSV használ vesszőket. Az európai CSV-k gyakran pontosvesszőt használnak, mert a vesszőt tizedes elválasztóként használják sok európai számformátumban. A tabulátorral elválasztott értékek (TSV) egy másik elterjedt változat.
YAML behúzási hibák
A YAML behúzást (szóközöket, soha nem tabulátorokat) használ a szerkezet meghatározásához. Egy következetlen behúzás, vagy tabulátorok és szóközök keverése elemzési hibákat vagy csendes félreértelmezéseket okoz. Pontosan 2 szóközt használj behúzási szintenként, és állítsd be a szerkesztődet, hogy szóközöket illesszen be tabulátorok helyett.
Figyelmeztetés A YAML-ban a no karakterlánc logikai false értékként értelmezhető, a yes pedig true-ként. Az 1.0 karakterlánc számként értelmezhető. Ha a „no", „yes" vagy „1.0" literális karakterláncokat szeretnéd, idézőjelbe kell tenni őket: "no", "yes", "1.0". Ez a YAML egyik leghírhedtebb csapdája.
JSON utólagos vesszők
A JSON nem enged meg utólagos vesszőket. Ez érvényes JavaScriptben, de nem érvényes JSON-ban:
{"name": "Alice", "age": 30,} // Érvénytelen JSON: utólagos vessző
Nagy fájlok teljesítménye
Nagyon nagy adathalmazokhoz (milliók sornyi) a CSV hatékonyabb, mint a JSON vagy YAML, mert minimális többletterhelés van rekordonként. A JSON kapcsos zárójeleket és idézőjeleket ad minden értékhez, ami nagy táblázatos adatoknál jelentősen növeli a fájlméretet.
Praktikus eszközök a konverzióhoz
Gyors, egyszeri konverziókhoz a böngészőalapú eszközök a leggyorsabb megoldás. Beilleszted vagy feltöltöd az adatokat, kiválasztod a célformátumot, és azonnal megkapod az eredményt.
Tipp Konvertálj JSON, YAML és CSV formátumok között azonnal: Adatformátumok konvertálása. Illeszd be az adatokat, válaszd ki a célformátumot, és másold vagy töltsd le az eredményt.
JSON-nal való munkához kifejezetten egy formázó, amely érvényesíti és szépen nyomtatja a JSON-t, felbecsülhetetlen értékű:
- JSON Formázó — JSON érvényesítése, formázása és minifikálása
- JSON-ból CSV konvertáló — JSON-tömbök konvertálása CSV-be
- YAML-JSON konvertáló — konvertálás YAML és JSON között
- CSV-megtekintő — CSV fájlok megtekintése és böngészése
Konvertáld az adataidat most:
Minden eszköz ingyenes és közvetlenül a böngésződben működik.