Akár egy webalkalmazást konfigurálsz, akár szolgáltatások között cserélsz adatot, akár egy táblázatkezelő exportot elemzel, akár egy API-választ olvasol, strukturált szöveges formátumokban tárolt adatokkal fogsz találkozni. A négy leggyakoribb a JSON, YAML, CSV és XML.
Mindegyik formátumot más célokkal tervezték, és a megfelelő választás a felhasználási esettől függ. Ez a cikk elmagyarázza, mi az egyes formátumok, hogyan néznek ki, mikor érdemes használni őket, és hogyan viszonyulnak egymáshoz.
JSON — JavaScript Object Notation
A JSON lett a domináns adatcsere-formátum a weben. Neve ellenére nyelvfüggetlen, és mindenhol használják.
Szintaxis példa:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Fő jellemzők:
- Kulcs-érték párok tiszta, olvasható szintaxissal
- Támogatja a szöveget, számokat, logikai értékeket, tömböket, objektumokat és a null-t
- Szabványos JSON-ban nem megengedettek a megjegyzések
- Szigorú szintaxis — a záró vesszők és az egyszeres idézőjelek hibát okoznak
Gyakori felhasználási esetek: REST API-k, konfigurációs fájlok (package.json, tsconfig.json), NoSQL adatbázisok (MongoDB), adat csere a frontend és a backend között.
Jó tudni. A JSON szigorú szintaxisa egyszerre erősség és gyengeség. Megbízhatóvá és egyértelművé teszi az elemzést, de azt is jelenti, hogy egyetlen hiányzó vagy fölösleges záró vessző az egész fájlt elrontja.
YAML — YAML Ain't Markup Language
A YAML-t úgy tervezték, hogy a lehető legolvashatóbb adatszerializációs formátum legyen. Behúzást használ zárójelek helyett, és különösen népszerű a konfigurációs fájlokhoz.
Szintaxis példa:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Fő jellemzők:
- Behúzás-alapú struktúra (nincsenek zárójelek vagy kapcsos zárójelek)
- Megjegyzések támogatása
#jellel - Minden JSON adattípust támogat, sőt többet is (dátumok, többsoros szövegek)
- Szóköz-érzékeny — a helytelen behúzás elrontja a fájlt
Gyakori felhasználási esetek: Docker Compose fájlok, Kubernetes manifesztek, CI/CD pipeline-ok (GitHub Actions, GitLab CI), Ansible playbookok, Hugo/Jekyll konfiguráció.
A YAML a JSON szuperszetje, ami azt jelenti, hogy bármely érvényes JSON dokumentum egyben érvényes YAML is. A YAML rugalmassága azonban kétélű fegyver lehet — az implicit típuskonverzió (például az yes logikai true-ként való értelmezése, vagy a 3.10 3.1-gyé válása) sok finom hibát okozott már.
CSV — Comma-Separated Values
A CSV a legegyszerűbb strukturált adatformátum. Táblázatos adatokat tárol egyszerű szövegként, ahol minden sor egy rekord, az értékeket pedig vesszők (vagy néha pontosvesszők, tabulátorok vagy más elválasztójelek) választják el.
Szintaxis példa:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Fő jellemzők:
- Rendkívül egyszerű — csak szöveg elválasztójelekkel
- Nincsenek adattípusok — minden szöveg
- Nincs szabványos módja az egymásba ágyazott adatok megjelenítésének
- Nincs hivatalos univerzális szabvány (az RFC 4180 létezik, de nem követik univerzálisan)
- A fájlméretek nagyon kicsik
Gyakori felhasználási esetek: Táblázatkezelő exportok, adatbázis importok/exportok, adatelemzés (pandas, R), egyszerű adatcsere, naplófájlok.
A CSV egyszerűsége a legnagyobb erőssége és egyben legnagyobb korlátja. Tökéletes lapos, táblázatos adatokhoz, de nem képes hierarchikus struktúrákat megjeleníteni. Az szélsőséges esetek (vesszők az értékekben, többsoros mezők, kódolási problémák) bonyolultabbá teszik az elemzést, mint első pillantásra tűnik.
XML — Extensible Markup Language
Az XML volt a domináns adatcsere-formátum, mielőtt a JSON átvette a helyét. Címke-alapú szintaxist használ, hasonlóan a HTML-hez, és támogatja az összetett funkciókat, mint a sémák, névterek és transzformációk.
Szintaxis példa:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Fő jellemzők:
- Címke-alapú struktúra nyitó és záró címkékkel
- Támogatja az attribútumokat, névtereket, sémákat (XSD) és transzformációkat (XSLT)
- Megjegyzések támogatása
- Nagyon bőbeszédű a többi formátumhoz képest
- Rendkívül jól definiált szabvány szigorú validációval
Gyakori felhasználási esetek: SOAP webszolgáltatások, vállalati integrációk, dokumentumformátumok (DOCX, SVG, RSS), konfigurációs fájlok Java/.NET ökoszisztémákban, kormányzati és pénzügyi adatcsere.
Az XML bőbeszédűbb, mint a JSON vagy a YAML, de a sémavalidációs képességei felbecsülhetetlenné teszik olyan környezetben, ahol az adatintegritás és a rendszerek közötti formális szerződések kritikusak.
Összehasonlítás
| Jellemző | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Olvashatóság | Jó | Kiváló | Jó (táblázatos) | Mérsékelt |
| Bőbeszédűség | Alacsony | Alacsony | Nagyon alacsony | Magas |
| Megjegyzések | Nem | Igen | Nem | Igen |
| Egymásba ágyazott adatok | Igen | Igen | Nem | Igen |
| Adattípusok | Alap | Gazdag | Nincs (mind szöveg) | Sémán keresztül |
| Sémavalidáció | JSON Schema | Nincs szabvány | Nem | XSD |
| Fájlméret | Kicsi | Kicsi | Legkisebb | Nagy |
| Elemzési sebesség | Gyors | Mérsékelt | Gyors | Mérsékelt |
| Fő terület | Web API-k | DevOps konfig | Adatok/táblázatok | Vállalati |
Mikor melyiket használd
- Válaszd a JSON-t, ha web API-kat építesz, JavaScript/TypeScript projektek konfigurációját tárolod, vagy szolgáltatások között cserélsz adatot. Ez az alapértelmezett választás a legtöbb modern alkalmazásnál.
- Válaszd a YAML-t, ha olyan konfigurációs fájlokat írsz, amelyeket emberek fognak gyakran olvasni és szerkeszteni. Az olvashatósága és megjegyzés-támogatása ideálissá teszi a DevOps és az infrastruktúra mint kód számára.
- Válaszd a CSV-t, ha táblázatos adatokkal dolgozol, táblázatkezelőkből vagy adatbázisokból importálsz/exportálsz, vagy ha a fájlméretnek minimálisnak kell lennie. Kerüld el hierarchikus adatoknál.
- Válaszd az XML-t, ha vállalati rendszerekkel, SOAP API-kkal dolgozol, vagy formális sémavalidációt igénylő környezetben. Szintén a megfelelő választás, ha dokumentum-orientált jelölésre van szükséged (mint SVG vagy RSS).
Formátumok közötti konverzió
A formátumok közötti konvertálás gyakori feladat. Néhány szempont, amit érdemes figyelembe venni:
- JSON-ból YAML-ba (és fordítva) általában veszteségmentes, mivel a YAML a JSON szuperszetje.
- CSV-ből JSON/YAML-ba jól működik lapos adatoknál, de döntéseket igényel a struktúráról egymásba ágyazott kimenet esetén.
- XML-ből JSON-ba információvesztéssel járhat (attribútumok, névterek, sorrend), mert a JSON-nak nincsenek megfelelő koncepciói.
- Bármely formátumból CSV-be csak akkor működik, ha az adat lapos, vagy értelmesen lapítható.
Tipp. Formátumok közötti konvertáláskor mindig ellenőrizd a kimenetet. Az automatikus konverziók csendben veszíthetnek adatot, különösen XML attribútumok, YAML típuskonverzió vagy CSV kódolási szélsőséges esetek esetén.
Tovább
A ToolK.io ingyenes eszközöket kínál a JSON, YAML, CSV és XML közötti konvertáláshoz, az adataid formázásához és validálásához, valamint kapcsolódó útmutatókat a strukturált adatokkal való munkához a projektjeidben.
