Fie că configurezi o aplicație web, schimbi date între servicii, analizezi un export din foaie de calcul sau citești un răspuns API, vei întâlni date stocate în formate text structurate. Cele patru cele mai comune sunt JSON, YAML, CSV și XML.
Fiecare format a fost proiectat cu obiective diferite, iar alegerea celui potrivit depinde de cazul tău de utilizare. Acest articol explică ce este fiecare format, cum arată, când să-l folosești și cum se compară între ele.
JSON — JavaScript Object Notation
JSON a devenit formatul dominant de schimb de date pe web. În ciuda numelui, este independent de limbaj și folosit peste tot.
Exemplu de sintaxă:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Caracteristici cheie:
- Perechi cheie-valoare cu o sintaxă curată și lizibilă
- Suportă șiruri, numere, booleene, tablouri, obiecte și null
- Comentariile nu sunt permise în JSON standard
- Sintaxă strictă — virgulele finale și ghilimelele simple sunt erori
Cazuri comune de utilizare: REST API-uri, fișiere de configurare (package.json, tsconfig.json), baze de date NoSQL (MongoDB), schimb de date între frontend și backend.
Bine de știut. Sintaxa strictă a JSON este atât un punct forte, cât și unul slab. Face analiza fiabilă și neambiguă, dar înseamnă și că o singură virgulă lipsă sau în plus va strica întregul fișier.
YAML — YAML Ain't Markup Language
YAML a fost proiectat să fie cel mai lizibil format de serializare a datelor posibil. Folosește indentarea în loc de paranteze și este deosebit de popular pentru fișierele de configurare.
Exemplu de sintaxă:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Caracteristici cheie:
- Structură bazată pe indentare (fără paranteze sau acolade)
- Suportă comentarii cu
# - Suportă toate tipurile de date JSON plus altele (date calendaristice, șiruri pe mai multe linii)
- Sensibil la spații — indentarea incorectă strică fișierul
Cazuri comune de utilizare: Fișiere Docker Compose, manifeste Kubernetes, pipeline-uri CI/CD (GitHub Actions, GitLab CI), playbook-uri Ansible, configurare Hugo/Jekyll.
YAML este un superset al JSON, ceea ce înseamnă că orice document JSON valid este și YAML valid. Cu toate acestea, flexibilitatea YAML poate fi o sabie cu două tăișuri — conversia implicită a tipurilor (de exemplu, yes interpretat ca boolean true, sau 3.10 devenind 3.1) a cauzat multe erori subtile.
CSV — Comma-Separated Values
CSV este cel mai simplu format de date structurate. Stochează date tabulare ca text simplu, fiecare linie fiind un rând și valorile fiind separate prin virgule (sau uneori punct și virgulă, tab-uri sau alți delimitatori).
Exemplu de sintaxă:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Caracteristici cheie:
- Extrem de simplu — doar text cu delimitatori
- Fără tipuri de date — totul este un șir
- Niciun mod standard de a reprezenta date imbricate
- Niciun standard universal oficial (RFC 4180 există dar nu este urmat universal)
- Dimensiunile fișierelor sunt foarte mici
Cazuri comune de utilizare: Export-uri din foi de calcul, importuri/exporturi din baze de date, analiză de date (pandas, R), schimb simplu de date, fișiere jurnal.
Simplitatea CSV este cea mai mare forță și cea mai mare limitare a sa. Este perfect pentru date tabulare plate, dar nu poate reprezenta structuri ierarhice. Cazurile limită (virgule în valori, câmpuri pe mai multe linii, probleme de codificare) fac analiza mai complexă decât pare la prima vedere.
XML — Extensible Markup Language
XML a fost formatul dominant de schimb de date înainte ca JSON să preia locul. Folosește o sintaxă bazată pe etichete similar cu HTML și suportă funcționalități complexe precum scheme, spații de nume și transformări.
Exemplu de sintaxă:
<?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>
Caracteristici cheie:
- Structură bazată pe etichete cu etichete de deschidere și închidere
- Suportă atribute, spații de nume, scheme (XSD) și transformări (XSLT)
- Suportă comentarii
- Foarte verbos comparativ cu alte formate
- Standard extrem de bine definit cu validare strictă
Cazuri comune de utilizare: Servicii web SOAP, integrări enterprise, formate de documente (DOCX, SVG, RSS), fișiere de configurare în ecosistemele Java/.NET, schimb de date guvernamentale și financiare.
XML este mai verbos decât JSON sau YAML, dar capacitățile sale de validare a schemei îl fac de neînlocuit în contexte unde integritatea datelor și contractele formale între sisteme sunt critice.
Comparație
| Caracteristică | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Lizibilitate | Bună | Excelentă | Bună (tabular) | Acceptabilă |
| Verbozitate | Scăzută | Scăzută | Foarte scăzută | Ridicată |
| Comentarii | Nu | Da | Nu | Da |
| Date imbricate | Da | Da | Nu | Da |
| Tipuri de date | De bază | Bogate | Niciun (toate șiruri) | Via schemă |
| Validare schemă | JSON Schema | Fără standard | Nu | XSD |
| Dimensiune fișier | Mică | Mică | Cea mai mică | Mare |
| Viteză de analiză | Rapidă | Moderată | Rapidă | Moderată |
| Domeniu principal | API-uri web | Config DevOps | Date/foi de calcul | Enterprise |
Când să folosești ce
- Alege JSON când construiești API-uri web, stochezi configurare pentru proiecte JavaScript/TypeScript sau schimbi date între servicii. Este alegerea implicită pentru majoritatea aplicațiilor moderne.
- Alege YAML când scrii fișiere de configurare pe care oamenii le vor citi și edita frecvent. Lizibilitatea și suportul pentru comentarii îl fac ideal pentru DevOps și infrastructură ca cod.
- Alege CSV când lucrezi cu date tabulare, importi/exporti din foi de calcul sau baze de date, sau când dimensiunea fișierului trebuie să fie minimală. Evită-l pentru orice ierarhic.
- Alege XML când lucrezi cu sisteme enterprise, SOAP API-uri sau contexte care necesită validare formală a schemei. Este de asemenea alegerea potrivită când ai nevoie de markup orientat pe documente (ca SVG sau RSS).
Conversia între formate
Conversia între aceste formate este o sarcină comună. Câteva lucruri de ținut minte:
- JSON în YAML (și invers) este de obicei fără pierderi deoarece YAML este un superset al JSON.
- CSV în JSON/YAML funcționează bine pentru date plate, dar necesită decizii despre structură pentru ieșiri imbricate.
- XML în JSON poate pierde informații (atribute, spații de nume, ordine) deoarece JSON nu are concepte echivalente.
- Orice format în CSV funcționează doar dacă datele sunt plate sau pot fi aplatizate în mod semnificativ.
Sfat. Când convertești între formate, verifică întotdeauna rezultatul. Conversiile automate pot pierde date în mod silențios, în special cu atributele XML, conversia de tip YAML sau cazurile limită de codificare CSV.
Mai departe
ToolK.io oferă instrumente gratuite pentru a converti între JSON, YAML, CSV și XML, a formata și valida datele tale, și tutoriale conexe pentru lucrul cu date structurate în proiectele tale.
