Konwerter JSON na YAML

Zamień JSON na czysty, przyjazny YAML dla Kubernetes, Docker Compose, GitHub Actions czy Ansible, z pełną kontrolą nad wcięciami, stylem i cudzysłowami.

Działa w przeglądarceBez rejestracjiNic nie jest wysyłane

Wynikowy JSON

Jak używać: JSON na YAML

  1. Wklej JSON do lewego pola lub otwórz plik .json.
  2. YAML pojawia się po prawej podczas pisania.
  3. Wybierz wcięcie (2 lub 4 spacje) i styl: blokowy (jeden klucz na linię) lub flow ({a: 1}/[x, y]) od wybranego poziomu zagnieżdżenia.
  4. Wybierz styl cudzysłowów i zaznacz Sortuj klucze, jeśli chcesz kolejność alfabetyczną.
  5. Skopiuj lub pobierz YAML. Nieprawidłowy JSON jest zgłaszany z linią, kolumną i prawdopodobną przyczyną.

Po co konwertować JSON na YAML?

JSON jest idealny dla maszyn i API, ale YAML łatwiej czytać i edytować ludziom: bez nawiasów klamrowych, bez obowiązkowych cudzysłowów i z obsługą komentarzy. Większość narzędzi infrastrukturalnych, w tym Kubernetes, Helm, Docker Compose, GitHub Actions, GitLab CI i Ansible, konfiguruje się w YAML, podczas gdy dane wyjściowe (wynik API, kubectl get -o json, stan Terraform) to często JSON.

Styl blokowy a flow

Styl blokowy umieszcza każdy klucz i element listy w osobnej linii i jest standardem w plikach konfiguracyjnych. Styl flow używa inline’owych {} i [], jak JSON, i utrzymuje krótkie struktury liści w zwartej formie. „Flow od poziomu 2” zachowuje dwa górne poziomy w stylu blokowym, a głębsze zapisuje inline, co dobrze sprawdza się przy długich listach małych obiektów, np. portów czy zmiennych środowiskowych.

Bezpieczne cudzysłowy

Ciągi, które parser YAML mógłby źle odczytać, są automatycznie ujmowane w cudzysłowy: wartości takie jak 'no', 'on', '1.0', 'null', ciągi zaczynające się od * lub & oraz ciągi zawierające : . Wybierz Zawsze pojedyncze lub Zawsze podwójne, jeśli Twój przewodnik stylu wymaga cudzysłowów przy każdym ciągu.

Pułapki YAML 1.1 a 1.2

Ten konwerter stosuje YAML 1.2, aktualną specyfikację. Wiele starszych narzędzi (PyYAML, Psych w Ruby, niektóre wersje Kubernetes i Ansible) nadal czyta YAML 1.1, gdzie reguły są inne:

  • Problem Norwegii: w YAML 1.1 country: no oznacza false, więc kod kraju Norwegii NO znika. To samo dotyczy yes, on, off, y i n. YAML 1.2 traktuje jako wartości logiczne tylko true i false.
  • Liczby ósemkowe: 0755 to liczba ósemkowa w 1.1, ale zwykła dziesiętna w 1.2, który używa 0o755. Dla bezpieczeństwa ujmuj uprawnienia plików w cudzysłowy.
  • Liczby sześćdziesiątkowe: w 1.1 22:30 może zostać sparsowane jako liczba 1350. Ujmuj w cudzysłowy godziny i mapowania portów, np. "8080:80".

Kierunek JSON → YAML automatycznie ujmuje niejednoznaczne ciągi ('no', 'on', 'y') w cudzysłowy, więc wygenerowany YAML czyta się tak samo w obu wersjach.

Najczęściej zadawane pytania

Czy konwersja jest bezstratna?
Tak. Każdy dokument JSON jest poprawnym YAML 1.2, a wygenerowany YAML parsuje się z powrotem do dokładnie tych samych danych. Możesz to sprawdzić, klikając Zamień.
Dlaczego niektóre ciągi są w cudzysłowach, a inne nie?
W trybie Tylko gdy potrzebne cudzysłowy są dodawane tylko tam, gdzie wartość bez nich zmieniłaby znaczenie, np. 'yes', '123' lub ciągi ze znakami specjalnymi. Reszta pozostaje bez cudzysłowów dla czytelności.
Czy mogę dodać komentarze do wyniku?
JSON nie ma komentarzy, więc nie ma czego konwertować, ale po skopiowaniu możesz dodać # komentarze do YAML.
Czy kolejność kluczy się zmienia?
Nie. Klucze zachowują kolejność z JSON, chyba że zaznaczysz Sortuj klucze.
Czy moje dane są prywatne?
Tak. Konwerter działa w przeglądarce i nie wykonuje żadnych żądań sieciowych z Twoimi danymi.

Powiązane narzędzia