JSON, YAML, CSV: kdy použít co a jak převádět mezi formáty
Stáhnete datovou sadu a je ve formátu CSV. Vaše API vrací JSON. Konfigurační soubor je v YAML. Kolega vám pošle JSON a chce ho jako tabulku. Jiný kolega vám předá YAML konfiguraci a vy ji potřebujete jako JSON pro jiný nástroj.
Převod datových formátů patří k úkolům, které se zdají triviální, dokud je skutečně neděláte. Pochopení toho, kdy použít který formát a jak mezi nimi přecházet, ušetří reálný čas.
Tři formáty v kostce
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Praha",
"country": "Česká republika"
}
}
Co to je: Textový formát pro strukturovaná data podporující objekty (páry klíč–hodnota), pole (uspořádané seznamy), řetězce, čísla, booleovské hodnoty a null.
Silné stránky: Strojově čitelný, podporovaný v každém programovacím jazyce, přirozeně zpracovává vnořená data, přísná syntaxe zabraňuje nejednoznačnosti.
Slabé stránky: Upovídaný (mnoho závorek a uvozovek), méně čitelný než YAML, nepodporuje komentáře.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Praha
country: Česká republika
Co to je: Lidsky přívětivý formát pro serializaci dat, který místo závorek používá odsazení. Je nadmnožinou JSON, takže platný JSON je zároveň platný YAML.
Silné stránky: Velmi čitelný, podporuje komentáře, méně vizuálního šumu, skvělý pro konfigurační soubory.
Slabé stránky: Citlivý na odsazení (snadno se poruší špatným mezerováním), některé překvapivé způsoby parsování, pomalejší parsování než JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Praha,Česká republika
Bob,25,Londýn,UK
Charlie,35,Paříž,Francie
Co to je: Plochý textový formát, kde každý řádek je záznam a hodnoty jsou odděleny čárkami (nebo někdy středníky či tabulátory).
Silné stránky: Univerzální (podporují ho všechny tabulkové, databázové a datové nástroje), kompaktní pro tabulková data, snadno čitelný a vytvořitelný.
Slabé stránky: Nepodporuje vnořená data, neobsahuje datové typy (vše je řetězec), chybí standard pro speciální znaky, omezen na ploché tabulky.
Věděli jste? YAML je technicky nadmnožinou JSON. To znamená, že každý platný JSON dokument je automaticky platný YAML dokument. Můžete JSON vložit do YAML parseru a bude fungovat. Opak neplatí — funkce YAML (komentáře, kotvy, víceřádkové řetězce) nemají v JSON ekvivalent.
Kdy použít který formát
| Případ použití | Nejlepší formát | Proč |
|---|---|---|
| Požadavky a odpovědi API | JSON | Průmyslový standard, nativní podpora v každém jazyce |
| Konfigurační soubory | YAML | Čitelný pro člověka, komentáře pro dokumentaci |
| Data pro tabulky | CSV | Otevírá se přímo v Excelu, Google Tabulkách atd. |
| Exporty z databáze | CSV | Plochá tabulková data přímo odpovídají řádkům a sloupcům |
| Složitě vnořená data | JSON nebo YAML | CSV vnořování neumí |
| Výměna dat mezi systémy | JSON | Jednoznačné parsování, přísná specifikace |
| Konfigurace editovaná člověkem | YAML | Snáze čitelná a upravitelná ručně |
| Jednoduché datové seznamy | CSV | Nenáročný, bez režie |
Převod mezi formáty
JSON na YAML
Nejčastější konverzí konfigurace. Máte JSON konfiguraci z jednoho nástroje a potřebujete YAML pro jiný. Převod je přímočarý, protože YAML podporuje vše, co JSON.
{"server": {"host": "0.0.0.0", "port": 8080}}
Stane se:
server:
host: 0.0.0.0
port: 8080
YAML na JSON
Přechod z YAML na JSON je také jednoduchý, ale ztratíte komentáře (JSON je nepodporuje) a výsledek bude více upovídaný.
JSON na CSV
Funguje dobře pro ploché JSON pole (pole objektů se stejnými klíči). Každý objekt se stane řádkem a každý klíč záhlavím sloupce.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Stane se:
name,age
Alice,30
Bob,25
Varování Převod JSON na CSV selhává, pokud JSON obsahuje vnořené objekty nebo pole. CSV je ploché — neumí reprezentovat pole „skills" ani vnořený objekt „address". Vnořená data musí být buď zploštěna (address.city, address.country jako oddělené sloupce), nebo serializována jako řetězec v buňce CSV.
CSV na JSON
Každý řádek se stane objektem, záhlaví sloupců jsou klíče. Pro jednoduchá tabulková data je to přehledné.
CSV na YAML
Méně časté, ale řídí se stejnou logikou: každý řádek se stane mapováním YAML a celý soubor se stane sekvencí YAML.
Časté problémy
Problémy s kódováním CSV
Soubory CSV mohou používat různá kódování znaků (UTF-8, Latin-1, Windows-1252). Pokud otevřete CSV a vidíte nečitelné znaky jako „München" místo „München", jde o nesoulad kódování. Kdykoli je to možné, používejte UTF-8.
Záměna oddělovače v CSV
Ne všechna CSV používají čárky. Evropská CSV často používají středník, protože čárka se v mnoha evropských číselných formátech používá jako desetinná čárka. Dalším běžným variantem jsou hodnoty oddělené tabulátorem (TSV).
Chyby v odsazení YAML
YAML definuje strukturu pomocí odsazení (mezerami, nikdy tabulátory). Nekonzistentní odsazení nebo kombinování tabulátorů a mezer způsobuje chyby parsování nebo tiché nesprávné interpretace. Používejte přesně 2 mezery na úroveň odsazení a nakonfigurujte editor tak, aby vkládal mezery místo tabulátorů.
Varování V YAML je řetězec no parsován jako booleovská hodnota false a yes jako true. Řetězec 1.0 je parsován jako číslo. Pokud myslíte doslovné řetězce „no", „yes" nebo „1.0", musíte je uvést do uvozovek: "no", "yes", "1.0". Toto je jedna z nejznámějších záludností YAML.
Přebývající čárky v JSON
JSON nepřipouští přebývající čárky. V JavaScriptu je to platné, ale v JSON nikoli:
{"name": "Alice", "age": 30,} // Neplatné JSON: přebývající čárka
Výkon při velkých souborech
Pro velmi velké datové sady (miliony řádků) je CSV efektivnější než JSON nebo YAML, protože má minimální režii na záznam. JSON přidává závorky a uvozovky ke každé hodnotě, což u velkých tabulkových dat výrazně zvyšuje velikost souboru.
Praktické nástroje pro převod
Pro rychlé jednorázové převody jsou nejrychlejší volbou nástroje v prohlížeči. Vložíte nebo nahrajete data, vyberete cílový formát a okamžitě obdržíte výsledek.
Tip Okamžitě převádějte mezi formáty JSON, YAML a CSV: Jak převádět datové formáty. Vložte data, zvolte cílový formát a zkopírujte nebo stáhněte výsledek.
Pro práci konkrétně s JSON je neocenitelný formátovač, který váš JSON ověří a přehledně zobrazí:
- JSON Formatter — ověřte, formátujte a minifikujte JSON
- JSON to CSV Converter — převeďte JSON pole na CSV
- YAML-JSON Converter — převádějte mezi YAML a JSON
- CSV Viewer — prohlížejte a prozkoumávejte CSV soubory
Převeďte svá data hned teď:
Všechny nástroje jsou zdarma a fungují přímo ve vašem prohlížeči.