ToolDeck

YAML na JSON

Konwertuj YAML do formatu JSON

Wypróbuj przykład

Wejście YAML

Wyjście JSON

Działa lokalnie · Bezpieczne do wklejania sekretów
JSON pojawi się tutaj…
Wypróbuj też:YAML to XML

Czym jest konwersja YAML na JSON?

Konwersja YAML na JSON przekształca dane zapisane w YAML (YAML Ain't Markup Language) do formatu JSON (JavaScript Object Notation). Oba formaty reprezentują dane strukturalne jako pary klucz-wartość, sekwencje i obiekty zagnieżdżone, ale różnią się składnią. YAML używa wcięć i minimalnej interpunkcji, podczas gdy JSON korzysta z nawiasów klamrowych, nawiasów kwadratowych i obowiązkowego cytowania. Konwersja między tymi formatami to typowe zadanie podczas przenoszenia danych konfiguracyjnych między systemami oczekującymi różnych formatów.

YAML został zaprojektowany z myślą o czytelności dla człowieka. Obsługuje komentarze, ciągi wieloliniowe, kotwice i aliasy — żadna z tych funkcji nie istnieje w JSON. Podczas konwersji YAML na JSON te specyficzne dla YAML właściwości są rozwiązywane: kotwice są rozwijane w miejscu, komentarze są odrzucane, a bloki wieloliniowe stają się ciągami z sekwencjami ucieczki. Wynik jest prawidłowym JSON, który może odczytać każdy parser JSON.

Specyfikacja YAML 1.2 wprost definiuje JSON jako podzbiór YAML, co oznacza, że każdy prawidłowy dokument JSON jest również prawidłowym YAML. Odwrotna zasada nie obowiązuje. Dokumenty YAML używające komentarzy, kotwic lub złożonych kluczy nie mają bezpośredniego odpowiednika w JSON i muszą być uproszczone podczas konwersji. Narzędzie obsługuje tę konwersję automatycznie, generując czysty, dobrze sformatowany JSON z dowolnego prawidłowego wejścia YAML.

YAML 1.2 Specification — yaml.org →

Dlaczego używać konwertera YAML na JSON online?

Ręczna konwersja YAML na JSON jest podatna na błędy, szczególnie przy głęboko zagnieżdżonych strukturach lub wartościach wieloliniowych. Konwerter działający w przeglądarce daje wynik natychmiast i wykrywa błędy składni YAML zanim dotrą do Twojej aplikacji.

Natychmiastowa konwersja w przeglądarce
Wklej YAML i otrzymaj sformatowany JSON w milisekundach. Bez narzędzi CLI do zainstalowania, bez kroku budowania, bez zależności do zarządzania.
🔀
Obsługa dowolnej prawidłowej struktury YAML
Obsługuje zagnieżdżone mapowania, sekwencje, ciągi wieloliniowe (bloki dosłowne i złożone), kotwice, aliasy, klucze scalania oraz wszystkie typy skalarne YAML 1.2.
🔒
Zachowanie prywatności danych
Całe przetwarzanie odbywa się lokalnie w przeglądarce przy użyciu JavaScript. Treść YAML nigdy nie jest wysyłana na serwer, co czyni narzędzie bezpiecznym dla plików konfiguracyjnych zawierających dane uwierzytelniające lub ścieżki wewnętrzne.
📋
Kopiowanie lub dostosowanie formatu wyjściowego
Przełączaj między wcięciem 2- i 4-spacjowym. Skopiuj wynik JSON do schowka jednym kliknięciem do bezpośredniego użycia w kodzie, żądaniach API lub plikach konfiguracyjnych.

Przypadki użycia konwersji YAML na JSON

Tworzenie aplikacji frontendowych
Konwertuj pliki konfiguracyjne YAML z systemu projektowania lub CMS do JSON na potrzeby bundlerów JavaScript, REST API lub bibliotek i18n wymagających wejścia w formacie JSON.
Inżynieria backendowa
Przekształcaj application.yml aplikacji Spring Boot lub database.yml frameworka Rails do JSON, aby zasilić skrypty wdrożeniowe, bramy API lub usługi akceptujące wyłącznie konfigurację JSON.
DevOps i CI/CD
Konwertuj docker-compose.yml, przepływy pracy GitHub Actions lub manifesty Kubernetes do JSON na potrzeby narzędzi walidacyjnych, silników polityk jak OPA lub debugowania za pomocą jq.
Zapewnienie jakości i testowanie
Zamieniaj testowe zestawy danych YAML na ładunki JSON dla narzędzi testowania API, takich jak Postman, Insomnia lub zautomatyzowane zestawy testów oczekujące treści żądań w JSON.
Inżynieria danych
Konwertuj definicje potoków w YAML (Airflow, dbt, Dagster) do JSON na potrzeby walidacji schematu, programowego przetwarzania lub integracji z katalogami metadanych.
Nauka i dokumentacja
Szybko sprawdzaj, jak struktury YAML odwzorowują się na ich odpowiedniki JSON podczas nauki formatów konfiguracyjnych lub pisania dokumentacji.

Tabela odwzorowania typów YAML na JSON

Każdy typ danych YAML odwzorowuje się na konkretny typ JSON podczas konwersji. Poniższa tabela przedstawia każdą konstrukcję YAML wraz z odpowiadającym wyjściem JSON. Zrozumienie tych odwzorowań pomaga przewidzieć, jak dane YAML będą wyglądać po konwersji, i unikać niespodzianek z typami takimi jak wartości logiczne czy null.

Typ YAMLSkładnia YAMLWyjście JSON
Mappingname: Alice{ "name": "Alice" }
Sequence- apple\n- banana["apple", "banana"]
Stringgreeting: hello world"hello world"
Integercount: 4242
Floatratio: 3.143.14
Booleanactive: truetrue
Nullvalue: nullnull
Multiline (|)bio: |\n Line one\n Line two"Line one\nLine two\n"
Folded (>)note: >\n A long\n paragraph"A long paragraph\n"
Anchor/Alias&default\n <<: *defaultResolved inline (no $ref)

Składnia YAML a JSON

YAML i JSON reprezentują ten sam model danych, ale przy różnych regułach składni. Różnice poniżej wyjaśniają, dlaczego niektóre funkcje YAML — takie jak komentarze i kotwice — nie mają odpowiednika w JSON.

YAML
Używa wcięć do zagnieżdżania (bez nawiasów klamrowych). Obsługuje komentarze za pomocą #. Ciągi znaków zazwyczaj nie wymagają cudzysłowów. Umożliwia wartości wieloliniowe za pomocą | (dosłowny) i > (złożony) skalarów blokowych. Obsługuje kotwice (&nazwa) i aliasy (*nazwa) dla wielokrotnego użycia. W YAML 1.2 tylko true i false są rozpoznawane jako wartości logiczne; starsze parsery YAML 1.1 akceptowały również yes, no, on i off, ale w YAML 1.2 są one traktowane jako zwykłe ciągi znaków.
JSON
Używa nawiasów klamrowych i kwadratowych do zagnieżdżania. Brak składni komentarzy. Wszystkie ciągi znaków muszą być ujęte w podwójne cudzysłowy. Brak dosłownych ciągów wieloliniowych — zamiast nich używaj sekwencji ucieczki \n. Brak mechanizmu kotwic i aliasów. Wartości logiczne to ściśle małe litery true i false. Wszystkie klucze muszą być ujętymi w cudzysłów ciągami znaków. Końcowe przecinki są nieprawidłowe.

Przykłady kodu

Poniżej znajdują się działające przykłady programowej konwersji YAML na JSON. Każdy przykład przetwarza ciąg YAML i wyświetla sformatowany JSON.

JavaScript (Node.js)
import { load } from 'js-yaml'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const json = JSON.stringify(load(yamlStr), null, 2)
console.log(json)
// → {
// →   "server": {
// →     "host": "localhost",
// →     "port": 8080,
// →     "ssl": true
// →   }
// → }
Python
import yaml, json

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: s3cret
"""

data = yaml.safe_load(yaml_str)
print(json.dumps(data, indent=2))
# → {
# →   "database": {
# →     "host": "db.example.com",
# →     "port": 5432,
# →     "credentials": {
# →       "user": "admin",
# →       "password": "s3cret"
# →     }
# →   }
# → }
Go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"gopkg.in/yaml.v3"
)

func main() {
	yamlData := []byte(`
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
`)

	var obj map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &obj); err != nil {
		log.Fatal(err)
	}
	jsonBytes, _ := json.MarshalIndent(obj, "", "  ")
	fmt.Println(string(jsonBytes))
	// → { "services": { "web": { "image": "nginx:latest", "ports": ["80:80"] } } }
}
CLI (yq + jq)
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json

# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }

# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml

Często zadawane pytania

Czy YAML jest nadzbiorem JSON?
Tak, od wersji YAML 1.2 (opublikowanej w 2009 roku). Każdy prawidłowy dokument JSON jest również prawidłowym YAML. Specyfikacja YAML została celowo zaktualizowana, aby zapewnić pełną kompatybilność z JSON. Odwrotna zasada nie obowiązuje — funkcje YAML, takie jak komentarze, kotwice i niecytowane klucze, nie mają odpowiednika w JSON.
Co dzieje się z komentarzami YAML podczas konwersji?
Komentarze są odrzucane. JSON nie ma składni komentarzy, więc wszelkie wiersze rozpoczynające się od # w wejściu YAML są tracone podczas konwersji. Jeśli musisz zachować komentarze, przechowuj oryginalny plik YAML jako źródło prawdy i generuj z niego JSON w razie potrzeby.
Jak obsługiwane są kotwice i aliasy YAML?
Kotwice (&nazwa) i aliasy (*nazwa) są rozwiązywane podczas przetwarzania. Alias jest zastępowany pełną kopią danych zakotwiczonych. Wynikowy JSON nie zawiera odwołań — wszystkie wartości są rozwinięte w miejscu. Klucze scalania (<<: *nazwa) są rozwiązywane w ten sam sposób.
Czy konwersja YAML na JSON może prowadzić do utraty danych?
W przypadku wartości danych — nie. Wszystkie typy skalarne YAML (ciągi znaków, liczby, wartości logiczne, null) mają bezpośrednie odpowiedniki w JSON. Co jest tracone: komentarze, dyrektywy tagów, nazwy kotwic oraz rozróżnienie między stylem blokowym a przepływowym. Jeśli YAML używa niestandardowych tagów (!!python/object, !!timestamp), są one rozwiązywane do zwykłych wartości lub mogą powodować błąd parsowania w zależności od parsera.
Dlaczego wartość logiczna 'yes' w YAML staje się ciągiem znaków w JSON?
Narzędzie używa js-yaml v4, który stosuje rozwiązywanie wartości logicznych zgodnie z YAML 1.2. Tylko true i false (w dowolnej wielkości liter) są rozpoznawane jako wartości logiczne. Wartości takie jak yes, no, on i off są traktowane jako zwykłe ciągi znaków i pojawiają się jako ujęte w cudzysłów ciągi w wynikowym JSON. Jeśli widzisz nieoczekiwane ciągi znaków tam, gdzie spodziewasz się wartości logicznych, zmień je na true lub false w źródłowym YAML.
Jaki jest maksymalny rozmiar pliku YAML obsługiwany przez to narzędzie?
Narzędzie działa w przeglądarce, więc limit zależy od dostępnej pamięci urządzenia. W praktyce pliki do kilku megabajtów konwertują się bez problemów. W przypadku bardzo dużych plików (50 MB+) narzędzie CLI jak yq lub skrypt Python z biblioteką PyYAML będzie bardziej niezawodne, ponieważ mogą przesyłać dane strumieniowo zamiast ładować wszystko do pamięci naraz.
Jak wieloliniowe ciągi YAML konwertują się do JSON?
YAML ma dwa style skalarów blokowych dla wieloliniowych wartości. Bloki dosłowne (|) zachowują podziały wierszy jako znaki \n w ciągu JSON. Bloki złożone (>) zastępują pojedyncze podziały wierszy spacjami, zamieniając wiele wierszy w jeden akapit. Oba style domyślnie dołączają końcowy znak nowego wiersza, który można usunąć za pomocą wskaźnika przycinania (|- lub >-).