JSON vs YAML - Který formát dat použít?
Podrobné srovnání formátů JSON a YAML. Zjistěte, kdy použít JSON a kdy YAML, rozdíly v syntaxi, výkonu a čitelnosti.
Porovnání JSON a YAML
Porovnání obou možností podle klíčových vlastností.
| Vlastnost | JSON | YAML |
|---|---|---|
| Readability | Good | Excellent |
| Parsing Speed | Very Fast | Slower |
| File Size | Larger (brackets) | Smaller (indent) |
| Comments Support | No | Yes |
| Language Support | Universal | Growing |
| Security Risk | Low | Higher (YAML bombs) |
| Schema Validation | Strong (JSON Schema) | Limited |
| Learning Curve | Easy | Moderate |
Nejlepší
Střední
Slabé
✓ = vítěz v řádku
Kdy použít - shrnutí
JSON
API, výměna dat mezi službami a konfigurační soubory konzumované JavaScriptem.
YAML
Konfigurace psaná lidmi (Docker Compose, Kubernetes), CI/CD pipeline a dokumentace s komentáři.
Kdy použít jednotlivé formáty
Kdy použít JSON
- REST API request and response bodies
- Configuration files consumed by JavaScript apps
- NoSQL database storage (MongoDB, DynamoDB)
- Data exchange between microservices and web hooks
- Package manifests like package.json and tsconfig.json
Kdy použít YAML
- Docker Compose and Kubernetes manifest files
- CI/CD pipeline definitions (GitHub Actions, GitLab CI)
- Human-edited configuration with comments (Ansible, Prometheus)
- Documentation front matter (Jekyll, Hugo, MkDocs)
- CloudFormation and Serverless Framework templates
Často kladené otázky
Je YAML nadmnožinou JSON?
Ne, jde o častou mylnou představu. Ačkoli byl YAML 1.2 navržen tak, aby mohl být JSON použit jako platná podmnožina, v praxi se oba parsery liší. JSON je platným YAML vždy pouze u konkrétních parserů YAML 1.2 a mnoho reálně používaných knihoven YAML následuje sémantiku YAML 1.1, která libovolný JSON nepřijímá.
Který formát se parsuje rychleji — JSON nebo YAML?
JSON se parsuje výrazně rychleji téměř v každém jazykovém prostředí. Parsery JSON vycházejí z jednoduchých oddělovačů, jako jsou složené závorky a uvozovky, zatímco YAML musí interpretovat významné bílé znaky, kotvy (anchors), aliasy a vícedokumentové proudy. Benchmarky běžně ukazují, že parsování JSON je u ekvivalentních dat 3-10x rychlejší než parsování YAML.
Mohu do JSON přidávat komentáře?
Standardní JSON (RFC 8259) komentáře nepodporuje. Běžnými obejitími jsou vyhrazený klíč, například "_comment", nebo přechod na nadmnožiny JSONC, JSON5 či HJSON. YAML komentáře podporuje nativně pomocí znaku #, což je jedna z jeho hlavních výhod u ručně upravované konfigurace.
Co je to YAML bomb a jak se mu vyhnout?
YAML bomb (útok billion laughs) využívá kotvy (anchors) a aliasy YAML k exponenciálnímu rozrůstání malého souboru, které vyčerpá paměť. Abyste se mu vyhnuli, použijte parser, který rozšiřování aliasů zakazuje nebo omezuje hloubku dokumentu, a nikdy neparsujte YAML z nedůvěryhodného zdroje. JSON vůči této třídě útoků zranitelný není.
Mám pro manifesty Kubernetes použít JSON nebo YAML?
Kubernetes přijímá obojí, ale standardem v komunitě je YAML, protože podporuje komentáře, vícedokumentové soubory oddělené pomocí --- a je kompaktnější pro ruční úpravy. JSON se hodí pro strojově generované manifesty a API volání pomocí kubectl apply -f.