Konwerter YAML na JSON
Wklej YAML, uzyskaj JSON natychmiast. Konwersja na żywo w przeglądarce. Obsługa manifestów K8s, OpenAPI i Helm values. 100% prywatnie, bez przesyłania.
Opcje · 2 spacje
Czym jest JSON?
JSON (JavaScript Object Notation) to lekki, tekstowy format wymiany danych ustandaryzowany jako RFC 8259 i ECMA-404. Obsługuje sześć typów danych — ciągi znaków, liczby, wartości logiczne, null, tablice i obiekty — z rygorystyczną, minimalną składnią, którą praktycznie każdy język programowania, API i narzędziowy łańcuch może parsować natywnie. Choć YAML jest preferowanym formatem dla plików konfiguracyjnych pisanych przez człowieka (manifesty Kubernetes, GitHub Actions, Ansible playbook, Helm values), JSON jest uniwersalnym formatem czytelnym maszynowo dla API, skryptów automatyzacji i programowego przetwarzania danych.
Konwersja YAML do JSON jest więc jednym z najczęstszych zadań w DevOps i programowaniu backendowym — masz plik konfiguracyjny YAML, ale potrzebujesz JSON do wysłania do REST API, zapytania przez jq lub przetworzenia narzędziami JavaScript.
Narzędzie ma cztery ważne cechy wyróżniające na tle typowych konwerterów online:
**1. Obsługa wielodokumentowego YAML.** YAML obsługuje wiele dokumentów w jednym strumieniu rozdzielonych --- (znacznikiem początku dokumentu). Wiele rzeczywistych plików YAML — w tym niektóre manifesty Kubernetes i Ansible playbook — zawiera wiele dokumentów. Narzędzie używa parseAllDocuments z biblioteki eemeli/yaml z opcjami { version: '1.2', merge: true } i zwraca pierwszy dokument jako JSON, wyraźnie informując, który dokument został wzięty. Jeśli potrzebujesz wszystkich dokumentów, podziel na --- i konwertuj każdy osobno.
**2. Rozwijanie kotwic i aliasów.** Kotwice YAML (&name) i aliasy (*name) umożliwiają ponowne użycie bloków danych — to potężna funkcja YAML bez odpowiednika w JSON. Narzędzie w pełni rozwija wszystkie kotwice i aliasy (łącznie z kluczami scalającymi: <<: *anchor), dzięki czemu wynikowy JSON zawiera pełne, samodzielne dane bez żadnych referencji. Jest to zawsze prawidłowa transformacja, bo JSON nie ma składni referencji. Rozwijanie jest obsługiwane bezpiecznie przez bibliotekę eemeli/yaml, która zawiera ochronę przed cyklicznymi referencjami. Narzędzie do konwersji w odwrotnym kierunku znajdziesz pod adresem Konwerter JSON na YAML.
**3. Utrata komentarzy — transparentna informacja.** YAML obsługuje komentarze #, często używane w manifestach Kubernetes, Helm values i Ansible playbook do dokumentowania intencji. JSON nie ma składni komentarzy, więc komentarze są trwale usuwane podczas konwersji. Nie jest to błąd — to fundamentalna różnica formatów. Narzędzie wyraźnie to komunikuje, byś wiedział, czego się spodziewać. Jeśli chcesz zachować adnotacje, zakoduj je jako pola JSON (klucze _comment lub dedykowany obiekt metadata) lub zachowaj YAML jako źródło autorytatywne. Więcej informacji w naszym artykule o problemie Norway w YAML i różnicach JSON-YAML.
**4. 100% prywatność w przeglądarce.** Dane YAML — często zawierające sekrety Kubernetes, dane uwierzytelniające baz danych, Helm values z hasłami i wewnętrzne konfiguracje usług — nigdy nie opuszczają przeglądarki. Żadne dane nie są wysyłane na serwer. Można to zweryfikować w zakładce Sieć przeglądarki. Po konwersji do JSON możesz zwalidować i sformatować wynik przy użyciu naszego formatowania JSON przed dalszym użyciem.
Bogactwo YAML (komentarze, kotwice, obsługa wielu dokumentów, skalary blokowe) sprawia, że doskonale nadaje się do plików konfiguracyjnych pisanych przez człowieka, gdzie czytelność i dokumentacja mają znaczenie. Rygorystyczność i uniwersalność JSON czynią go lepszym wyborem, gdy głównym konsumentem jest maszyna. Ten konwerter łączy oba światy: zachowaj konfigurację w YAML dla łatwości utrzymania przez człowieka, konwertuj do JSON gdy potrzebujesz maszynowo czytelnej wymiany danych.
// Convert YAML to JSON in Node.js using the eemeli/yaml library
import { parseAllDocuments } from 'yaml';
const yamlString = `apiVersion: apps/v1
kind: Deployment`;
// parseAllDocuments handles multi-document YAML (--- separator)
// version: '1.2' ensures yes/no are strings, not booleans
// merge: true expands anchor/alias merge keys (<<: *anchor)
const docs = parseAllDocuments(yamlString, { version: '1.2', merge: true });
// Take the first document (skip additional --- blocks)
const json = JSON.stringify(docs[0].toJSON(), null, 2);
console.log(json);
// {
// "apiVersion": "apps/v1",
// "kind": "Deployment"
// } Kluczowe funkcje
Konwersja na żywo
Wynik JSON aktualizuje się natychmiast podczas wpisywania lub wklejania YAML — bez potrzeby klikania przycisku Konwertuj. Duże dane wejściowe (>200 KB) automatycznie przełączają się na tryb ręczny, aby przeglądarka pozostała responsywna.
Wcięcie 2 lub 4 spacje
Przełączaj między wcięciem 2- i 4-spacjowym dla wynikowego JSON. 2 spacje to standard dla większości narzędzi i API; 4 spacje odpowiadają niektórym przewodnikom stylu i domyślnym ustawieniom edytorów.
Obsługa wielu dokumentów
Obsługuje strumienie YAML z wieloma dokumentami rozdzielonymi ---. Pierwszy dokument jest konwertowany do JSON i zwracany. Przydatne dla plików Kubernetes z wieloma zasobami i Ansible playbook.
Rozwijanie kotwic i aliasów
W pełni rozwija kotwice YAML (&name) i aliasy (*name), łącznie z kluczami scalającymi (<<: *anchor). Wynikowy JSON zawiera pełne, rozwinięte dane bez żadnych referencji — prawidłowe zachowanie, gdyż JSON nie ma odpowiednika.
100% prywatność w przeglądarce
Cała konwersja odbywa się lokalnie w przeglądarce przy użyciu JavaScript. Dane YAML — w tym sekrety, dane uwierzytelniające i konfiguracje produkcyjne — nigdy nie są wysyłane na żaden serwer, nigdy nie są rejestrowane ani przechowywane.
Obsługa K8s, Compose, Helm i OpenAPI
Zoptymalizowane dla rzeczywistych zastosowań DevOps: manifesty Kubernetes, stosy Docker Compose, Helm chart values, przepływy pracy GitHub Actions, specyfikacje OpenAPI i Ansible playbook — z przykładami dla każdego przypadku.
Przykłady
Manifest Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
labels:
app: my-app
version: 1.0.0
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0.0
ports:
- containerPort: 8080
resources:
requests:
memory: 64Mi
cpu: 250m
limits:
memory: 128Mi
cpu: 500m Konwersja manifestu Kubernetes Deployment z YAML do JSON — przydatna do zapytań przez jq, wysyłania do API Kubernetes lub użycia w potokach Terraform i CI/CD
Docker Compose
version: '3.9'
services:
web:
image: nginx:1.25-alpine
ports:
- '80:80'
- '443:443'
environment:
NGINX_HOST: example.com
NGINX_PORT: '80'
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: mydb
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: {} Konwersja YAML Docker Compose do JSON na potrzeby programowego przetwarzania, użycia w skryptach automatyzacji lub obróbki narzędziami JavaScript
Przepływ pracy GitHub Actions
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run tests
run: pnpm test Parsowanie przepływu pracy GitHub Actions z YAML do JSON w celu zapytania o konkretne pola, walidacji struktury lub integracji z API przyjmującymi JSON
Specyfikacja OpenAPI
openapi: 3.0.3
info:
title: User API
version: 1.0.0
description: Manage application users
paths:
/users:
get:
summary: List users
operationId: listUsers
parameters:
- name: limit
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
/users/{id}:
get:
summary: Get user
operationId: getUser
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Success
components:
schemas:
User:
type: object
properties:
id:
type: string
name:
type: string
email:
type: string
format: email Konwersja specyfikacji OpenAPI 3.0 z YAML do JSON do użytku z generatorami kodu klienta, narzędziami do testowania API lub programowym sprawdzaniem schematu
Helm values.yaml
replicaCount: 3
image:
repository: my-app
tag: 1.0.0
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
className: nginx
hosts:
- host: my-app.example.com
paths:
- path: /
pathType: Prefix
resources:
requests:
memory: 64Mi
cpu: 250m
limits:
memory: 128Mi
cpu: 500m
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80 Konwersja pliku values.yaml Helm chart do JSON w celu analizy, generowania raportów lub użycia w narzędziach oczekujących konfiguracji JSON
Ansible Playbook
- name: Configure web servers
hosts: webservers
become: true
vars:
http_port: 80
max_clients: 200
tasks:
- name: Ensure nginx is installed
ansible.builtin.package:
name: nginx
state: present
- name: Start nginx service
ansible.builtin.service:
name: nginx
state: started
enabled: true
- name: Copy nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
notify:
- Restart nginx
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted Parsowanie Ansible playbook z YAML do JSON w celu inspekcji struktury zadań, audytu konfiguracji lub integracji z potokami raportowania
Jak używać
- 1
Wklej dane YAML
Wprowadź lub wklej dane YAML do pola wejściowego powyżej. Możesz też kliknąć «Wczytaj przykład», aby wypróbować próbkę, np. Kubernetes Deployment, plik Docker Compose lub Helm values.yaml.
- 2
Zobacz wynik JSON na żywo
JSON pojawia się natychmiast w panelu wyjściowym. Dostosuj Opcje (wcięcie 2 lub 4 spacje), aby spełnić wymagania docelowego narzędzia.
- 3
Kopiuj lub pobierz
Kliknij Kopiuj, aby przenieść JSON do schowka, lub Pobierz, aby zapisać go jako plik .json gotowy do użycia z jq, wywołań API lub dowolnych narzędzi downstream.
Typowe problemy z YAML
Wcięcia tabulatorem
Specyfikacja YAML zabrania znaków tabulacji do wcięć — dozwolone są tylko spacje. Jeśli YAML był napisany lub skopiowany z edytora używającego tabulatorów, parser zgłosi błąd. Zastąp wszystkie wcięcia tabulatorem spacjami (2 lub 4 spacje na poziom).
services: web: image: nginx:1.25-alpine
services:
web:
image: nginx:1.25-alpine Niespójne wcięcia
YAML używa spójnych wcięć do definiowania zagnieżdżenia. Mieszanie różnych liczb spacji w tym samym bloku (np. 2 spacje na jednym poziomie i 3 na innym) powoduje błędy parsowania. Każdy poziom musi być wcięty o tę samą liczbę spacji w całym dokumencie.
metadata: name: my-app namespace: production
metadata: name: my-app namespace: production
Znaki specjalne bez cudzysłowów
Znaki takie jak :, #, &, *, {, }, [, ], |, >, ! i @ mają specjalne znaczenie w YAML. Użycie ich bez cudzysłowów w wartościach może powodować błędy parsowania lub nieoczekiwane zachowanie. Ujmuj wartości zawierające te znaki w cudzysłowy pojedyncze lub podwójne.
url: http://example.com:8080/api tag: #latest
url: 'http://example.com:8080/api' tag: '#latest'
Cykliczne kotwice
YAML technicznie pozwala na kotwice odwołujące się do siebie (cykliczne referencje), choć w praktyce zdarza się to rzadko. Cykliczna kotwica powoduje, że parser wchodzi w nieskończoną pętlę rozwijania. Biblioteka eemeli/yaml wykrywa i zgłasza błąd dla cyklicznych kotwic zamiast się zawieszać.
# Circular anchor (rare but possible) base: &base parent: *base
# Use explicit fields instead of circular references base: parent: null
Zamieszanie z wieloma dokumentami
Pliki YAML z wieloma separatorami --- zawierają wiele dokumentów. Narzędzie zwraca tylko pierwszy dokument jako JSON. Jeśli oczekujesz danych z późniejszego dokumentu (po drugim lub trzecim ---), nie pojawią się one w wynikowym pliku. Podziel YAML na --- i konwertuj każdą sekcję osobno, jeśli potrzebujesz wszystkich dokumentów.
# Only the first document is converted apiVersion: v1 kind: ConfigMap --- apiVersion: v1 kind: Secret
# Convert each document separately apiVersion: v1 kind: ConfigMap
Utrata komentarzy
YAML obsługuje komentarze #, ale JSON nie. Wszystkie komentarze YAML są trwale usuwane podczas konwersji — to fundamentalna różnica formatów, a nie ograniczenie narzędzia. Jeśli chcesz zachować adnotacje w JSON, zakoduj je jako dedykowane pole, np. klucz _comment lub obiekt metadata.
# This comment will be lost replicas: 3 # scale this up for production
replicas: 3 _comment: scale this up for production
Typowe zastosowania
- Analiza manifestów Kubernetes
- Konwersja manifestów YAML Kubernetes do JSON w celu zapytań przez jq, wysyłania do REST API Kubernetes, przetwarzania w źródłach danych Terraform lub przekazywania do potoków CI/CD oczekujących JSON.
- Docker Compose do narzędzi JavaScript
- Parsowanie YAML Docker Compose do JSON w celu wyodrębnienia definicji usług, nazw obrazów, przyporządkowań portów i zmiennych środowiskowych do użycia w skryptach automatyzacji, grafach zależności lub narzędziach Node.js.
- Integracja API GitHub Actions
- Konwersja YAML przepływów pracy GitHub Actions do JSON w celu programowej walidacji struktury, wyodrębnienia definicji zadań i kroków lub integracji z API CI/CD przyjmującymi specyfikacje przepływów pracy w JSON.
- OpenAPI do generowania kodu klienta
- Wiele generatorów kodu (openapi-generator, swagger-codegen, oazapfts) przyjmuje specyfikacje OpenAPI w obu formatach. Konwertuj specyfikację YAML do JSON, gdy narzędzie wymaga konkretnie JSON lub gdy chcesz ją sprawdzić walidatorami JSON Schema.
- Analiza Helm values
- Konwersja pliku values.yaml Helm chart do JSON w celu generowania raportów, porównywania wartości między środowiskami, przekazywania do narzędzi egzekwowania polityk lub przetwarzania przez automatyzację oczekującą konfiguracji JSON.
- Migracja konfiguracji do narzędzi opartych na JSON
- Migracja konfiguracji aplikacji z YAML (typowego w narzędziach infrastrukturalnych) do JSON do użytku w środowiskach JavaScript, REST API, AWS AppConfig, Azure App Configuration lub dowolnym systemie przechowującym konfiguracje jako JSON.
Szczegóły techniczne
- Specyfikacja YAML 1.2 przez parseAllDocuments z merge:true
- YAML jest parsowany przy użyciu biblioteki eemeli/yaml (v2.8+, bezpieczna pod kątem CVE) przez parseAllDocuments z opcjami { version: '1.2', merge: true }. Schemat YAML 1.2 zapewnia, że ciągi gołe takie jak yes i no są traktowane jako ciągi znaków (nie wartości logiczne), zgodnie z aktualną specyfikacją YAML. Opcja merge: true w pełni rozwija klucze scalające kotwic/aliasów (<<: *anchor), dzięki czemu wynikowy JSON zawiera pełne, rozwinięte dane. Wielodokumentowy YAML (rozdzielony ---) zwraca pierwszy dokument.
- Rozwijanie kotwic i aliasów przez bibliotekę
- Biblioteka eemeli/yaml obsługuje rozwijanie kotwic (&name) i aliasów (*name) bezpiecznie, łącznie z wykrywaniem cyklicznych referencji. Wszystkie aliasowane bloki danych — łącznie z rozwinięciami kluczy scalających — są w pełni wbudowane w wynikowym JSON. Jest to prawidłowa transformacja, bo JSON nie ma koncepcji referencji ani kotwicy. Bezpieczne rozwijanie przez bibliotekę zapobiega nieskończonym pętlom z nieprawidłowo zbudowanego YAML.
- W przeglądarce — bez przesyłania, bez serwera
- Całe przetwarzanie odbywa się wyłącznie w silniku JavaScript przeglądarki. Żadne dane nie są przesyłane przez sieć w żadnym momencie. Dane wejściowe większe niż 200 KB automatycznie przełączają się z trybu na żywo na tryb ręczny (wymagający jawnego kliknięcia przycisku Konwertuj), aby utrzymać responsywność przeglądarki i zapobiec blokowaniu głównego wątku podczas intensywnej serializacji.
Dobre praktyki
- Używaj składni zgodnej z YAML 1.2 dla czystej konwersji
- Pisz YAML używając konwencji YAML 1.2 — jawnie ujmuj wartości ciągów yes, no, on, off, y i n w cudzysłowy (np. enabled: 'yes'), by uniknąć niejednoznaczności. Narzędzie parsuje ze schematem YAML 1.2 (więc są to ciągi znaków), ale starsze narzędzia w łańcuchu mogą używać YAML 1.1 (gdzie stają się wartościami logicznymi). Jawne cytowanie w źródłowym YAML jest najsłuszniejszą praktyką dla wszystkich parserów.
- Ujmuj duże liczby w cudzysłowy w YAML, aby zachować precyzję
- JavaScript nie może precyzyjnie reprezentować liczb całkowitych większych niż 2^53 - 1 (9007199254740991). Pola Kubernetes, jak resourceVersion i uid, są int64 po stronie serwera i mogą przekraczać ten limit. W źródłowym YAML ujmuj te wartości w cudzysłowy (resourceVersion: '9007199254740993'), aby parser traktował je jako ciągi znaków zachowane dokładnie w wynikowym JSON.
- Waliduj wynikowy JSON przed użyciem w API
- Po konwersji YAML do JSON zwaliduj wynik przed wysłaniem do API, przechowywaniem lub programowym przetwarzaniem. Użyj naszego formatowania JSON, aby potwierdzić poprawność struktury. Jest to szczególnie ważne dla wywołań API Kubernetes, specyfikacji OpenAPI i wszelkich ładunków walidowanych przez JSON Schema, gdzie błąd struktury powoduje mylącą odmowę na poziomie API, a nie na etapie konwersji.
- Oddzielaj wielodokumentowy YAML przed konwersją
- Jeśli plik YAML zawiera wiele dokumentów rozdzielonych --- i potrzebujesz wszystkich jako JSON, najpierw podziel plik na --- i konwertuj każdy dokument osobno. Narzędzie bierze tylko pierwszy dokument. Proste podejście: podziel na '\n---\n' w edytorze lub przy użyciu awk, a następnie wklejaj każdą sekcję osobno.
- Używaj jq do przetwarzania JSON downstream
- Gdy masz już JSON z YAML, jq jest najszybszym sposobem zapytania i transformacji go z wiersza poleceń. Połącz narzędzie z jq: konwertuj YAML online, wklej JSON, a następnie użyj jq '.spec.replicas' lub jq '.services | keys', aby wyodrębnić dokładnie to, czego potrzebujesz. Dla przetwarzania wsadowego wielu plików użyj bezpośrednio yq CLI z flagą -o json.
Najczęściej zadawane pytania
Jak przekonwertować YAML na JSON online?
Jak narzędzie obsługuje wielodokumentowy YAML (separator ---)?
Jak obsługiwane są kotwice i aliasy YAML (&anchor i *alias)?
Czy komentarze YAML są zachowywane w wynikowym JSON?
Jak używać narzędzia z manifestem Kubernetes?
Jak narzędzie pomaga przy plikach Docker Compose?
Jaka jest różnica między YAML 1.1 a YAML 1.2 i którego używa narzędzie?
Dlaczego YAML zabrania wcięć tabulatorem?
Czy duże liczby mogą tracić precyzję przy konwersji YAML do JSON?
Jak przekonwertować YAML na JSON w wierszu poleceń?
Czy dane YAML są wysyłane na serwer podczas korzystania z narzędzia?
Czy jest limit rozmiaru dla danych wejściowych YAML?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Formatowanie i walidacja JSON
Kodowanie i formatowanie
Formatuj, waliduj i upiększaj JSON w przeglądarce. Bezpłatne narzędzie z kontrolą składni, wykrywaniem błędów i minifikacją. 100% prywatnie.
Konwerter JSON na YAML
Kodowanie i formatowanie
Wklej JSON, uzyskaj YAML natychmiast. Konwersja na żywo w przeglądarce. Obsługa K8s i Compose, wcięcia 2/4 spacje, bezpieczne cytowanie Norway. 100% prywatnie.
Koder i dekoder URL z wbudowanym parserem URL
Kodowanie i formatowanie
Dekoduj i koduj adresy URL z wbudowanym parserem URL. Tryb podwójny: encodeURI i encodeURIComponent. 100% prywatnie, bez wysyłki na serwer.
Konwerter systemów liczbowych — binary, hex, decimal i octal
Narzędzia konwersji
Konwertuj między systemami binarnym, szesnastkowym, dziesiętnym i ósemkowym (2–36) w czasie rzeczywistym. Bezpłatnie i prywatnie — w przeglądarce.
Kompresor obrazów online — JPEG, PNG i WebP
Narzędzia konwersji
Kompresja JPEG, PNG i WebP nawet o 80% — w przeglądarce, bez przesyłania na serwer. Wsadowo do 20 obrazów, porównanie przed i po. Prywatnie.