§

Wklej JSON lub YAML, który chcesz przekonwertować.

Tryb
Wcięcie
Opcje
§

Wynik

yaml

Skakanie między JSON a YAML to chleb powszedni polskich zespołów platformowych. Allegro prowadzi jedną z największych platform Kubernetes w UE, gdzie manifesty YAML lądują w przeglądach kodu, a kubectl i Helm operują na nich wewnętrznie jako JSON. CD Projekt obsługuje infrastrukturę kontenerową dla gier, mBank wdrożył K8s w produkcji, a Asseco oraz Comarch dostarczają usługi kontenerowe dla sektora publicznego. Rządowa chmurakrajowa.gov.pl ujednolica manifesty wdrożeniowe w obu formatach, OVHcloud Poland udostępnia GitOps na Argo CD, a workflow GitHub Actions, OpenAPI dla KSeF czy szablony CloudFormation przy każdym PR-ze krążą między JSON a YAML — bo audytorzy KNF wolą jeden, a generatory schematów drugi.

Czym jest konwersja JSON ↔ YAML?

JSON (JavaScript Object Notation, RFC 8259) to ścisły, oparty na nawiasach klamrowych format tekstowy dla danych ustrukturyzowanych; YAML (YAML Ain't Markup Language, wersja 1.2) to nadzbiór JSON-a, który dla tego samego modelu wartości używa wcięć, znaków końca linii i czytelnej dla człowieka składni. Konwersja między nimi pozwala przełączać tę samą konfigurację między formą przyjazną dla maszyn (JSON dla API, walidacji schematu, programistycznych transformacji) a formą przyjazną dla człowieka (YAML do code review, manifestów Kubernetes, workflow GitHub Actions) bez przepisywania ani jednego klucza.

Jak działa konwersja JSON ↔ YAML?

Każda konwersja działa lokalnie w Twojej przeglądarce za pomocą wbudowanej biblioteki js-yaml (MIT, wersja 4.1.0). Najważniejsze kroki to:

  1. Przełącznik trybu (Wykryj automatycznie / JSON → YAML / YAML → JSON) decyduje, który potok się uruchamia. W trybie Wykryj automatycznie pierwszy znak niebędący białym znakiem decyduje o kierunku — { lub [ oznacza JSON; cokolwiek innego oznacza YAML.
  2. JSON → YAML: JSON.parse waliduje wejście i produkuje wartość JavaScript; jsyaml.dump(value, { indent, lineWidth: -1, sortKeys: false }) zapisuje formę YAML 1.2. Z włączoną opcją Wielodokumentowy tablica wejściowa jest zrzucana jeden element na dokument i łączona separatorami ---.
  3. YAML → JSON: jsyaml.loadAll parsuje każdy dokument w wejściu (automatycznie obsługując separatory ---) do tablicy; wejścia jednodokumentowe są rozpakowywane tak, by wyjście JSON było samym dokumentem, a nie jednoelementową tablicą.
  4. Wcięcie (2 lub 4 spacje) oraz formatowanie są konfigurowalne. Wyłączone formatowanie emituje zminifikowany JSON przez JSON.stringify(value) bez białych znaków.
  5. Wynik jest zapisywany do pola tekstowego tylko do odczytu. Przy błędach parsowania YAML komunikat zawiera 1-indeksowany wiersz i kolumnę raportowane przez e.mark z js-yaml, więc można od razu skoczyć do błędu.

Dlaczego konwertować JSON i YAML tym narzędziem?

  • Prywatność: każde parsowanie, transformacja i wyjście odbywa się w Twojej przeglądarce. Dane — w tym sekrety Kubernetes, podpisane JWT i własne konfiguracje — nigdy nie trafiają na nasze serwery.
  • Wielodokumentowy YAML: jsyaml.loadAll rozpoznaje separatory --- i zwraca tablicę dokumentów, którą konwerter rozpakowuje dla pojedynczych dokumentów lub zachowuje jako tablicę JSON w przypadku wielodokumentowym.
  • Rozwiązywanie kotwic i aliasów: mechanizm &anchor / *alias w YAML obsługuje domyślny schemat js-yaml. Wartość zdefiniowana raz i przywołana dwukrotnie wraca do obiektu JSON, w którym wszystkie odniesienia mają równe wartości.
  • Bez CDN, bez telemetrii: biblioteka js-yaml.min.js jest serwowana z tego samego źródła co strona, więc narzędzie działa offline, za firmowymi proxy i w środowiskach odciętych od sieci.

Jakie są typowe zastosowania konwersji JSON ↔ YAML?

Przełączanie między JSON a YAML pojawia się w DevOps, inżynierii platformowej i narzędziach API:

  • Manifesty Kubernetes: konwersja YAML Deployment, ConfigMap lub HelmRelease do JSON, aby wewnętrzny walidator polityk (Joi, Ajv, OPA Rego) mógł sprawdzić go programowo, a potem z powrotem do YAML do zastosowania w klastrze.
  • Workflowy CI/CD: obrót workflow.yml GitHub Actions przez JSON, aby generator kodu przepisał macierz lub zależności zadań, a następnie emisja czystego YAML do PR-a.
  • Specyfikacje OpenAPI: wklejenie JSON openapi.json z autogenerowanej dokumentacji backendu i konwersja do openapi.yaml dla referencji edytowanej ręcznie i wrzuconej do repo.

Jak wygląda przykład pełnego obiegu JSON ↔ YAML?

Wklejenie {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"name":"web"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"web"}}}} i naciśnięcie KONWERTUJ w trybie JSON → YAML produkuje osiem linii wciętego YAML z apiVersion: apps/v1 w pierwszej linii. Podanie tego YAML z powrotem w trybie YAML → JSON z włączonym formatowaniem zwraca pierwotny obiekt bajt po bajcie po stabilnym JSON.stringify(value, null, 2), z zachowaną kolejnością kluczy, ponieważ domyślny schemat js-yaml respektuje kolejność wstawiania w obu kierunkach.

Czy ten konwerter JSON ↔ YAML działa w całości w mojej przeglądarce?

Tak. Każde parsowanie, transformacja i emisja działają lokalnie jako JavaScript w karcie Twojej przeglądarki. Wbudowana biblioteka js-yaml jest serwowana z tego samego źródła co strona — bez CDN, bez fetch, bez XMLHttpRequest, bez navigator.sendBeacon na wejściu. Narzędzie działa też offline po wczytaniu strony, ponieważ jest to statyczny pakiet HTML/CSS/JS z biblioteką vendora obok. Sekrety Kubernetes, ładunki JWT, podpisane YAML-e CloudFormation i własne konfiguracje pozostają na Twoim urządzeniu.

Jak konwerter obsługuje wielodokumentowy YAML?

YAML obsługuje wiele dokumentów w jednym strumieniu rozdzielonych wierszami zawierającymi tylko ---. Przy YAML → JSON konwerter wywołuje jsyaml.loadAll, który zwraca każdy dokument jako wartość JavaScript. Jeśli znaleziono dokładnie jeden dokument, wyjściem JSON jest ten dokument bezpośrednio; jeśli dwa lub więcej — wyjściem jest tablica. Przy JSON → YAML, gdy wejście jest tablicą JSON ORAZ przełącznik Wielodokumentowy jest włączony, każdy element tablicy jest emitowany jako oddzielny dokument z separatorami --- między nimi — przydatne do generowania paczki gotowej dla kubectl apply z tablicy JSON zasobów.

Czy obsługiwane są kotwice i aliasy YAML?

Tak — definicje &anchor i odniesienia *alias są rozwiązywane przez domyślny schemat js-yaml w kroku wczytywania. Wejście YAML takie jak defaults: &d\n retries: 3\n timeout: 30\njob_a:\n <<: *d\njob_b:\n <<: *d parsuje się do obiektu JSON, w którym job_a i job_b zawierają retries: 3, timeout: 30. Klucz scalania << (rozszerzenie YAML 1.1, które js-yaml nadal honoruje) jest również obsługiwany w schemacie domyślnym.

Czy komentarze YAML są zachowywane przy konwersji do JSON i z powrotem?

Nie — js-yaml usuwa komentarze w kroku parsowania, więc obieg YAML → JSON → YAML traci każdą linię z prefiksem #. To znane ograniczenie modelu load/dump; jeśli zachowanie komentarzy jest krytyczne, użyj biblioteki świadomej komentarzy, takiej jak pakiet yaml z npm (oferuje API CST + AST zaprojektowane do zachowania trywii), zamiast js-yaml. Dla większości przepływów konfiguracyjnych kompromis jest do zaakceptowania: po obiegu YAML zachowuje każdy klucz, wartość, kotwicę i alias — tylko bez autorskich komentarzy.

Co się dzieje z niestandardowymi tagami YAML?

Konwerter używa DEFAULT_SCHEMA z js-yaml, który rozumie !!str, !!int, !!float, !!bool, !!null, !!seq, !!map, !!binary i !!timestamp — każdy tag ze schematów core i JSON YAML 1.2. Niestandardowe lub aplikacyjne tagi (np. !Ref w CloudFormation, !vault w Ansible) nie są rozpoznawane i kończą się czytelnym błędem cytującym nieobsługiwany tag. Dla CloudFormation w szczególności użyj aws cloudformation package + --output-template-file, aby rozwinąć niestandardowe tagi przed wklejeniem do tego konwertera.

Ten konwerter JSON ↔ YAML ma js-yaml@4.1.0 dołączony z tego samego źródła, wspiera strumienie wielodokumentowe oraz kotwice/aliasy out of the box i raportuje błędy parsowania YAML z wierszem i kolumną, byś mógł poprawić źródło. Bez uploadu, bez CDN, bez telemetrii — każdy bajt zostaje w Twojej przeglądarce.