JSON czy YAML
Podsumowanie: JSON rozdziela nawiasami, a YAML wcięciami: maszyny dostają JSON, ludzie edytujący konfigurację dostają YAML. Komentarze, kotwice i struktura wielu dokumentów nie przetrwają.

Najważniejsze: używaj JSON do danych maszyna-do-maszyny, a YAML do konfiguracji edytowanej przez ludzi; preferuj YAML, gdy potrzebujesz komentarzy, tekstu wieloliniowego lub kotwic, a JSON, gdy każdy język musi sparsować ten sam ładunek bez niejednoznaczności.
Obok siebie
{
"server": {
"host": "127.0.0.1",
"port": 8080
}
}
server:
host: 127.0.0.1
port: 8080
Ta sama struktura. YAML odrzuca interpunkcję i zyskuje miejsce na komentarz.
Gdzie się różnią
| JSON | YAML | |
|---|---|---|
| Struktura | Nawiasy i przecinki | Wcięcia |
| Komentarze | Brak | Są |
| Łańcuchy | Podwójne cudzysłowy, wymagana ucieczka | Zwykle bez cudzysłowów |
| Tekst wieloliniowy | Ucieczki \n lub tablice |
Skalary blokowe ` |
| Ponowne użycie | Brak | Kotwice & i aliasy * |
| Wiele dokumentów | Opakuj w tablicę | Separatory --- |
| Szybkość parsowania | Szybkie | Wolniejsze, reguły wcięć |
| Niejednoznaczność | Bardzo niska | no parsowane jako wartość logiczna, wcięcie o jeden za dużo |
Ten ostatni wiersz to prawdziwy koszt YAML. W YAML 1.1 country: NO daje wartość logiczną false, a version: 1.0 może stać się ułamkiem. JSON nie ma żadnego niejawnego typowania.
Wybór
JSON: treści żądań i odpowiedzi, komunikaty między usługami, kolumny JSON w bazach, cokolwiek, co musi parsować się identycznie w każdym języku.
YAML: ekosystemy, w których jest domyślny (Kubernetes, Ansible, GitHub Actions, Docker Compose); konfiguracja wymagająca wyjaśnień; pliki zdominowane przez długi tekst, takie jak certyfikaty, skrypty czy SQL.
Co gubi konwersja
YAML → JSON: wszystkie komentarze, ponowne użycie kotwic (rozwinięte w duplikaty), wszystkie dokumenty poza pierwszym i oryginalną pisownię dat oraz wartości logicznych.
JSON → YAML: rozróżnienie łańcuch/liczba słabnie, więc "8080" i 8080 wymagają jawnego cudzysłowu, by pozostać bezpieczne.
Konwertuj na potrzeby migracji i jednorazowego przeglądu. Nie utrzymuj tego samego pliku w dwóch formatach jako równoległych widoków.
FAQ
Jak zdecydować między JSON a YAML?
Zacznij od tego, kto czyta i utrzymuje plik: użyj JSON, gdy program go generuje, przekracza granice języków i musi parsować się przewidywalnie; użyj YAML, gdy człowiek go edytuje i potrzebuje wyjaśnień pól lub długiego tekstu wieloliniowego. Konwertują się wzajemnie, ale nie utrzymuj tej samej konfiguracji w obu formatach długoterminowo.
Dlaczego YAML produkuje więcej niejednoznaczności typów?
YAML ma niejawne typowanie, więc wartości takie jak NO, on czy 1.0 mogą stać się wartościami logicznymi, datami lub liczbami. JSON ma tylko jawne typy: łańcuch musi być w cudzysłowach, co czyni parsowanie bardziej przewidywalnym między językami.
Czy komentarze i kotwice powinny przetrwać przy konwersji YAML do JSON?
Nie. Komentarzy, kotwic i wielu dokumentów YAML nie da się przedstawić w JSON-ie; kotwice są rozwijane w zduplikowaną treść. Jeśli musisz je zachować, użyj biblioteki YAML z Document API, zamiast obiegu przez obiekt.