Konwerter CSV na YAML

Z YAML zbudowane są nowoczesne pliki konfiguracji: manifesty Kubernetes, przepływy GitHub Actions, Docker Compose, playbooki Ansible, fixtury Rails. Ten konwerter czyta CSV i tworzy sekwencję YAML, w której każdy wiersz staje się mapowaniem z kluczami z wiersza nagłówkowego. Wynik używa wcięcia dwuspacjowego i progu inline na poziomie 4, co pasuje do stylu większości edytorów i linterów.

Jak CSV staje się YAML

  1. 1

    Wklej CSV

    Próbka jest wczytana wstępnie, abyś zobaczył domyślny kształt wyniku; zastąp ją swoimi danymi.

  2. 2

    Wybierz separator

    Domyślnie przecinek. Wpisz `\t` dla wejścia rozdzielanego tabulatorem albo dowolny inny pojedynczy znak używany w twoim pliku.

  3. 3

    Nagłówki stają się kluczami

    Wiersz 1 traktowany jest jako nagłówek. Wiersze danych stają się mapowaniami pod tymi kluczami w tej samej kolejności co kolumny źródłowe.

  4. 4

    YAML zrzucony bezpiecznie

    Wynik renderuje komponent Symfony YAML, który ujmuje wartości w cudzysłów, gdy inaczej powstałaby niejednoznaczność z wartościami logicznymi, liczbami lub datami.

Dziwactwa YAML, które warto znać przed wklejeniem wyniku

YAML słynie z pobłażliwości na powierzchni i pełno w nim pułapek pod spodem. Zrzucacz radzi sobie z większością z nich, ale twoje dane i tak muszą przetrwać cykl tam i z powrotem.

Problem Norwegii i jego krewni

YAML 1.1 traktuje gołe no, yes, on, off, true, false, y, n (oraz ich formy z wielkiej litery) jako wartości logiczne. Oznacza to, że kolumna z kodem kraju z NO dla Norwegii może po cichu zamienić się w false.

Komórka źródłowa Emitowana jako (bez cudzysłowu) Zwykle zamierzona jako
NO false Kraj Norwegia
ON true Stan Ontario
123 123 Liczba albo identyfikator
0100 64 (ósemkowo!) Kod z zerem na początku

Zrzucacz automatycznie ujmuje ryzykowne wartości w cudzysłów, ale jeśli widzisz w wyniku błędne typy, przejdź dalej w łańcuchu na parsery YAML 1.2 albo jawnie ujmij w cudzysłów wartości, na których ci zależy.

Wybory formatowania

  • Wcięcie dwuspacjowe. Standard dla większości edytorów; lintery takie jak yamllint domyślnie to przyjmują.
  • Próg inline 4. Głęboko zagnieżdżone struktury drukują się w jednej linii poniżej 4. poziomu, powyżej rozwijają się na wiele linii. Dostosuj dalej w łańcuchu, jeśli chcesz ściślejszych bloków.
  • Kotwice i aliasy nie są generowane. Każdy wiersz to świeże mapowanie, nawet jeśli wiersze się powtarzają.

Przykładowy wynik

- name: Alice
  age: 30
- name: Bob
  age: 25

Kiedy wybrać YAML zamiast JSON

  • Konfiguracje edytowane ręcznie, gdzie liczą się komentarze i ciągi wieloliniowe.
  • Manifesty Kubernetes, potoki CI, playbooki Ansible.
  • Każdy kontekst, w którym ludzie będą czytać plik tak samo często jak maszyny.

W przeciwnym razie JSON jest ściślejszy i szybszy w parsowaniu, wybieraj go do formatów transmisyjnych i generowanych ładunków.

Najczęściej zadawane pytania

YAML 1.1 interpretuje gołe NO jako wartość logiczną. Konwerter ujmuje ryzykowne wartości w cudzysłów, ale jeśli parser dalej w łańcuchu nadal wymusza typy, ujmij problematyczne komórki w cudzysłów przed wklejeniem wyniku albo przejdź na parser YAML 1.2, który traktuje je jako zwykłe ciągi.

Nie tym konwerterem, każdy wiersz staje się płaskim mapowaniem. Do zagnieżdżonego YAML zbuduj mały skrypt wokół biblioteki YAML albo najpierw przekonwertuj na JSON i ukształtuj go w edytorze JSON.

Komórki są parsowane przez str_getcsv z wybranym separatorem. Wartości w cudzysłowie zachowują osadzone separatory i cudzysłowy tak samo, jak zrobiłby to prawdziwy parser CSV.

Tak. Wklejony CSV jest wysyłany na nasz serwer, ponieważ parsowanie i serializacja YAML odbywają się tam. Dane są używane wyłącznie do wygenerowania wyniku YAML i nie są przechowywane.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach