JSON, YAML, CSV: kiedy używać którego i jak konwertować
Pobierasz zbiór danych i jest w CSV. Twoje API zwraca JSON. Plik konfiguracyjny jest w YAML. Kolega wysyła Ci plik JSON i prosi o arkusz kalkulacyjny. Inny kolega przekazuje Ci konfigurację YAML, a Ty potrzebujesz jej jako JSON dla innego narzędzia.
Konwersja formatów danych to jedno z tych zadań, które wydają się trywialne, dopóki faktycznie ich nie wykonujesz. Zrozumienie, kiedy używać którego formatu i jak przechodzić między nimi, oszczędza realny czas.
Trzy formaty w pigułce
JSON (JavaScript Object Notation)
{
"name": "Alice",
"age": 30,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Berlin",
"country": "Germany"
}
}
Czym jest: Tekstowy format danych strukturalnych obsługujący obiekty (pary klucz-wartość), tablice (listy uporządkowane), ciągi znaków, liczby, wartości logiczne i null.
Zalety: Czytelny dla maszyn, szeroko obsługiwany w każdym języku programowania, naturalnie obsługuje zagnieżdżone dane, ścisła składnia zapobiega niejednoznaczności.
Wady: Rozwlekły (dużo nawiasów klamrowych, kwadratowych i cudzysłowów), mniej czytelny dla ludzi niż YAML, brak obsługi komentarzy.
YAML (YAML Ain't Markup Language)
name: Alice
age: 30
skills:
- Python
- SQL
- Docker
address:
city: Berlin
country: Germany
Czym jest: Przyjazny dla ludzi format serializacji danych, który używa wcięć zamiast nawiasów klamrowych i kwadratowych. Jest nadzbiorem JSON, co oznacza, że poprawny JSON jest również poprawnym YAML.
Zalety: Wyjątkowo czytelny, obsługuje komentarze, mniej szumu wizualnego, doskonały do plików konfiguracyjnych.
Wady: Wrażliwy na wcięcia (łatwo go zepsuć złymi odstępami), pewne zaskakujące zachowania parsowania, wolniejsze parsowanie niż JSON.
CSV (Comma-Separated Values)
name,age,city,country
Alice,30,Berlin,Germany
Bob,25,London,UK
Charlie,35,Paris,France
Czym jest: Płaski format tekstowy, w którym każda linia jest wierszem, a wartości w wierszu są oddzielone przecinkami (lub czasem średnikami lub tabulatorami).
Zalety: Uniwersalny (każdy arkusz kalkulacyjny, baza danych i narzędzie do danych go obsługuje), kompaktowy dla danych tabelarycznych, łatwy do czytania i tworzenia.
Wady: Brak obsługi zagnieżdżonych danych, brak typów danych (wszystko jest ciągiem znaków), brak standardu dla znaków specjalnych, ograniczony do płaskich tabel.
Czy wiesz, że? YAML jest technicznie nadzbiorem JSON. Oznacza to, że każdy poprawny dokument JSON jest automatycznie poprawnym dokumentem YAML. Możesz wkleić JSON do parsera YAML i zadziała. Odwrotność nie jest prawdą — funkcje YAML (komentarze, kotwice, ciągi wieloliniowe) nie mają odpowiedników w JSON.
Kiedy używać którego
| Zastosowanie | Najlepszy format | Dlaczego |
|---|---|---|
| Żądania i odpowiedzi API | JSON | Standard branżowy, każdy język ma natywną obsługę |
| Pliki konfiguracyjne | YAML | Czytelny dla ludzi, obsługuje komentarze do dokumentacji |
| Dane arkuszy kalkulacyjnych | CSV | Otwiera się bezpośrednio w Excelu, Google Sheets itp. |
| Eksporty baz danych | CSV | Płaskie dane tabelaryczne mapują się bezpośrednio na wiersze i kolumny |
| Złożone zagnieżdżone dane | JSON lub YAML | CSV nie może reprezentować zagnieżdżeń |
| Wymiana danych między systemami | JSON | Jednoznaczne parsowanie, ścisła specyfikacja |
| Konfiguracja edytowana ręcznie | YAML | Łatwiejszy do czytania i edycji ręcznej |
| Proste listy danych | CSV | Lekki, bez narzutu |
Konwersja między formatami
JSON do YAML
To najczęstsza konwersja konfiguracji. Masz konfigurację JSON z jednego narzędzia i potrzebujesz YAML dla innego. Konwersja jest prosta, ponieważ YAML obsługuje wszystko, co JSON.
{"server": {"host": "0.0.0.0", "port": 8080}}
Staje się:
server:
host: 0.0.0.0
port: 8080
YAML do JSON
Przejście z YAML do JSON jest również proste, ale tracisz komentarze (JSON ich nie obsługuje), a wynik jest bardziej rozwlekły.
JSON do CSV
Działa to dobrze dla płaskich tablic JSON (tablic obiektów z tymi samymi kluczami). Każdy obiekt staje się wierszem, a każdy klucz staje się nagłówkiem kolumny.
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
Staje się:
name,age
Alice,30
Bob,25
Uwaga Konwersja JSON do CSV nie sprawdza się, gdy JSON zawiera zagnieżdżone obiekty lub tablice. CSV jest płaski — nie ma sposobu na reprezentację tablicy „skills" ani zagnieżdżonego obiektu „address". Zagnieżdżone dane muszą być albo spłaszczone (address.city, address.country jako oddzielne kolumny), albo serializowane jako ciąg znaków w komórce CSV.
CSV do JSON
Każdy wiersz staje się obiektem, z nagłówkami kolumn jako kluczami. Jest to czyste dla prostych danych tabelarycznych.
CSV do YAML
Rzadziej spotykane, ale działa na tej samej zasadzie: każdy wiersz staje się mapowaniem YAML, a cały plik staje się sekwencją YAML.
Częste pułapki
Problemy z kodowaniem CSV
Pliki CSV mogą używać różnych kodowań znaków (UTF-8, Latin-1, Windows-1252). Jeśli otwierasz CSV i widzisz zniekształcone znaki jak „München" zamiast „München", to problem z niedopasowaniem kodowania. Zawsze używaj UTF-8, gdy to możliwe.
Zamieszanie z separatorem CSV
Nie wszystkie pliki CSV używają przecinków. Europejskie pliki CSV często używają średników, ponieważ przecinki są używane jako separatory dziesiętne w wielu europejskich formatach liczbowych. Wartości oddzielone tabulatorami (TSV) to kolejna popularna odmiana.
Błędy wcięć YAML
YAML używa wcięć (spacje, nigdy tabulatory) do definiowania struktury. Niespójne wcięcia lub mieszanie tabulatorów ze spacjami powoduje błędy parsowania lub cichą błędną interpretację. Używaj dokładnie 2 spacji na poziom wcięcia i skonfiguruj edytor, aby wstawiał spacje zamiast tabulatorów.
Uwaga W YAML ciąg no jest parsowany jako wartość logiczna false, a yes jako true. Ciąg 1.0 jest parsowany jako liczba. Jeśli masz na myśli dosłowne ciągi „no", „yes" lub „1.0", musisz je ująć w cudzysłowy: "no", "yes", "1.0". To jedna z najbardziej znanych pułapek YAML.
Końcowe przecinki w JSON
JSON nie pozwala na końcowe przecinki. To jest poprawne w JavaScript, ale niepoprawne w JSON:
{"name": "Alice", "age": 30,} // Niepoprawny JSON: końcowy przecinek
Wydajność przy dużych plikach
Dla bardzo dużych zbiorów danych (miliony wierszy) CSV jest wydajniejszy niż JSON lub YAML, ponieważ ma minimalny narzut na rekord. JSON dodaje nawiasy klamrowe i cudzysłowy do każdej wartości, co znacząco zwiększa rozmiar pliku dla dużych danych tabelarycznych.
Praktyczne narzędzia do konwersji
Do szybkich, jednorazowych konwersji narzędzia przeglądarkowe są najszybszą opcją. Wklejasz lub przesyłasz dane, wybierasz format docelowy i natychmiast otrzymujesz wynik.
Wskazówka Konwertuj między formatami JSON, YAML i CSV natychmiast: Jak konwertować formaty danych. Wklej dane, wybierz format docelowy i skopiuj lub pobierz wynik.
Do pracy z JSON w szczególności, formater walidujący i ładnie formatujący JSON jest nieoceniony:
- JSON Formatter — walidacja, formatowanie i minifikacja JSON
- Konwerter JSON do CSV — konwersja tablic JSON do CSV
- Konwerter YAML-JSON — konwersja między YAML i JSON
- Przeglądarka CSV — przeglądanie i eksploracja plików CSV
Skonwertuj swoje dane teraz:
Wszystkie narzędzia są darmowe i działają bezpośrednio w przeglądarce.