← Wszystkie narzędzia

Konwerter JSON do YAML

Konwertuj JSON do YAML i YAML do JSON natychmiast w przeglądarce. Lokalnie i prywatnie, z uwagami o komentarzach, typach, wcięciach i kotwicach.

Konwertuj JSON na YAML i YAML na JSON w przeglądarce

JSON i YAML opisują ten sam rodzaj danych — zagnieżdżone mapy, listy, ciągi znaków, liczby i wartości logiczne — ale wyglądają bardzo różnie i są używane w różnych miejscach. Jeśli spędzasz trochę czasu przy API, plikach kontenerów lub potokach CI, w końcu musisz zamienić jedno na drugie. Ta strona wykonuje tę konwersję w obu kierunkach, w całości w Twojej przeglądarce, więc wklejane dane nigdy nie opuszczają Twojego komputera.

Abstrakcyjne nawiasy klamrowe ze świateł przekształcające się w czyste warstwowane konfiguracje wcięć na ciemnogranatowym tle
Struktura JSON rozwijająca się w oparty na wcięciach YAML.

Czym jest JSON i gdzie żyje

JSON (JavaScript Object Notation) to ścisły format z nawiasami klamrowymi i kwadratowymi, zbudowany przede wszystkim dla maszyn. Każdy obiekt jest owinięty w {}, każda tablica w [], klucze i wartości ciągów są objęte cudzysłowami, a elementy rozdzielone przecinkami. Jest to domyślny format transmisji dla REST i GraphQL API, treść większości webhooków, kształt dokumentów NoSQL i to, co zwraca Twoje wywołanie fetch. Niemal każdy język parsuje go od razu po wyjęciu z pudełka, co jest dokładnie powodem, dla którego wygrał na warstwie API: JSON.parse w JavaScript, json w standardowej bibliotece Pythona i odpowiedniki wszędzie indziej. Kompromisem jest to, że JSON jest żmudny do ręcznego pisania i zabrania komentarzy, więc jest słabym formatem dla plików, które człowiek edytuje cały dzień.

Czym jest YAML i gdzie żyje

YAML (YAML Ain't Markup Language) został zaprojektowany z odwrotnym priorytetem: ludzie na pierwszym miejscu. Porzuca nawiasy klamrowe i cudzysłowy, używa wcięć do wyrażania zagnieżdżenia i pozwala pisać komentarze za pomocą #. Ta czytelność sprawia, że stał się lingua franca konfiguracji. Pliki Docker Compose, manifesty Kubernetes, przepływy pracy GitHub Actions i GitLab CI, playbooki Ansible i niezliczone pliki konfiguracyjne aplikacji to wszystko YAML. Typowy dokument YAML jest wyraźnie krótszy niż odpowiednik JSON i znacznie łatwiejszy do różnicowania w pull requeście. Ceną tej elegancji jest kruchość, co jest miejscem, gdzie konwersja staje się ciekawa.

Kluczowe różnice, które mają znaczenie

Trzy różnice napędzają niemal każdą decyzję o konwersji. Po pierwsze, białe znaki są znaczące w YAML, a w JSON nie mają znaczenia. YAML używa spacji — nigdy tabulatorów — do oznaczania struktury, więc jedna źle wyrównana spacja może po cichu zmienić znaczenie dokumentu. JSON w ogóle nie dba o wcięcia. Po drugie, YAML obsługuje komentarze, a JSON nie. Każdy komentarz # w YAML po prostu znika podczas tworzenia JSON, bo nie ma gdzie go umieścić. Po trzecie, YAML ma bogatsze, niejawne typowanie. Chętnie odczytuje daty, znaczniki czasu i null w kilku wersjach, i zgaduje typy na podstawie wartości bez cudzysłowów. JSON ma mały, jawny zestaw typów i brak niejednoznaczności. Zauważ też, że JSON jest technicznie podzbiorem YAML 1.2, dlatego prawidłowy JSON zazwyczaj parsuje się czysto jako YAML, ale odwrotność nie jest gwarantowana.

Zagnieżdżone drzewo danych konwertowane między dwoma świecącymi strukturalnymi formatami w kolorze cyjanowym i złotym
To samo drzewo danych wyrażone jako dwa formaty.

Pułapki konwersji, na które warto uważać

Podróż tam i z powrotem nie zawsze jest bezstratna i warto wiedzieć, gdzie rzeczy się psują:

  • Problem Norwegii. Według zasad YAML 1.1, nieobjęty cudzysłowem NO parsuje się jako wartość logiczna false, a yes, on i off też stają się wartościami logicznymi. Kod kraju lub etykieta przełącznika może zamienić się w true/false, zanim to zauważysz. Owijaj cudzysłowami wartości, które mają być ciągami.
  • Koercja liczb. Wersja jak 3.10 może stracić końcowe zero i stać się 3.1, a 1.0 staje się liczbą, nawet gdy chciałeś tekstu. Owijaj cudzysłowami ciągi wersji i identyfikatory.
  • Kotwice i aliasy znikają. Odwołania &anchor i *alias z YAML nie mają odpowiednika w JSON. Dobry konwerter rozszerza je do pełnych wartości, więc dane są poprawne, ale dedulikacja znika — JSON do YAML do JSON nie odbuduje oryginalnych kotwic.
  • Komentarze i blokowe skalary. Komentarze są odrzucane przy konwersji do JSON. Wieloliniowe blokowe skalary (| i >) zawijają się w zwykłe ciągi JSON z sekwencjami ucieczki \n, więc zamierzony wizualny format jest tracony.
  • Wcięcia przy powrocie do YAML. JSON nie koduje wcięć, więc konwerter wybiera spójny styl. Sprawdź go przed wklejeniem do narzędzia wrażliwego na wcięcia.

Dlaczego tylko lokalnie ma znaczenie

Pliki konfiguracyjne i ładunki API to dokładnie ten rodzaj rzeczy, których nie powinieneś przesyłać na losowy serwer: często zawierają nazwy hostów, tokeny, wewnętrzne nazwy serwisów lub dane klientów. Ten konwerter wykonuje krok parsowania i emitowania w Twojej przeglądarce za pomocą JavaScript. Nic nie jest wysyłane do backendu, nic nie jest logowane, a narzędzie działa offline po załadowaniu strony. Wklej sekret Kubernetes lub przepływ pracy CI z pewnością, że pozostaje na Twoim komputerze.

Potrzebujesz powiązanych narzędzi? Przeglądaj pełny zestaw konwerterów danych, czyść nieuporządkowane wejście z formaterem JSON i wracaj tutaj zawsze, gdy potrzebujesz przejść między światem API a światem konfiguracji.

Najczęściej zadawane pytania

Czy moje dane są gdzieś przesyłane?

Nie. Konwersja odbywa się w całości w Twojej przeglądarce za pomocą lokalnego JavaScript. Twój JSON lub YAML nigdy nie są wysyłane na serwer, więc sekrety i pliki konfiguracyjne pozostają prywatne.

Dlaczego moja wartość YAML true lub false zmieniła się nieoczekiwanie?

YAML 1.1 traktuje nieobjęte cudzysłowami słowa takie jak yes, no, on i off jako wartości logiczne — problem Norwegii. Owiń cudzysłowami każdą wartość, którą chcesz mieć jako ciąg, żeby przeżyła konwersję jako tekst.

Co dzieje się z moimi komentarzami podczas konwersji YAML na JSON?

JSON nie ma składni komentarzy, więc wszystkie komentarze z kratką są usuwane podczas konwersji. Jeśli chcesz zachować notatki, trzymaj swoją miarodajną kopię w YAML.

Czy kotwice i aliasy YAML są zachowane?

Są rozwijane do swoich pełnych wartości, bo JSON nie ma mechanizmu referencji. Dane pozostają poprawne, ale dedulikacja nie jest możliwa do odzyskania podczas konwersji z powrotem do YAML.

Czy mogę konwertować JSON na YAML, a nie tylko YAML na JSON?

Tak, narzędzie działa w obu kierunkach. Wklej JSON, żeby uzyskać YAML, lub wklej YAML, żeby uzyskać JSON, a konwerter wykrywa i emituje drugi format.

Dlaczego YAML psuje się, gdy używam tabulatorów?

YAML wymaga spacji do wcięć i odrzuca tabulatory. Jeśli wklejenie nie parsuje, zamień znaki tabulatora na spacje i zachowaj spójne wcięcia.